타닥타닥 개발자의 일상

자바 java로 함수 static 이용해서 사칙연산 계산기 만들기 본문

코딩 기록/Java

자바 java로 함수 static 이용해서 사칙연산 계산기 만들기

NomadHaven 2021. 12. 11. 00:00

 

import java.util.Scanner;

public class MainClass {

public static void main(String[] args) {  //public static void main 시작

 

 

 

int number1, number2;

String oper;

int result = 0;

 

// 1.첫번째 숫자 입력

number1 = numberInput("첫번째 수 = "); 

// 2. 연산자  입력

oper = operatorInput();

 

//3. 두번째 숫자 입력

number2 = numberInput("두번째 수 = ");

 

 

//4.연산

result = calculator(number1, number2, oper);

 

 

// 3.결과 출력

resultPrint(number1, number2, oper, result); 

 

} //public static void main 끝

 

 

static int numberInput(String msg) {

Scanner sc = new Scanner(System.in); //scanner 기능 사용 선언

String numStr;

while(true)             //true= 입력받은 값이 숫자다라는 건가 그냥 반복을 위해 쓴건가?

System.out.print(msg); //msg는 numberInput("첫번째수 = ")에 있는 "첫번째수 = " 출력

numStr = sc.next();  // numStr은 입력받은 값

 

boolean ok = numberCheck(numStr);      //numStr이란 입력 받은 값이 숫자면 true= 문자가아니다

 

if(ok == true) {   //숫자다 = 문자가 아니다

break;    //숫자이므로 함수 탈출

}

System.out.println("숫자를 정확히 입력해 주세요.");  //숫자가 아닐경우엔 숫자를 입력하라 출력

}

int number = Integer.parseInt(numStr);  //입력 받은 문자열 numStr을 정수로 바꿔 number로 초기화

return number;   //number라는 값을 반환 -> 어디에? 첫번째 숫자인 int number1에

}

 

 

static boolean numberCheck(String numStr) {    //boolean에 문자열 넣고 참 거짓 판별

boolean ok = true;  // boolean ok = 숫자다 = true = 문자가 아니다

for (int i = 0; i < numStr.length(); i++) {

int n = (int)numStr.charAt(i); // 입력받은 문자열에서 한 문자씩 정수 값으로 강제 변환해 n에 대입

if(n < 48 || n > 57) {   

//문자 0~9의 아스키 코드 10진수는 48~57 따라서 이 조건에 해당 되면 숫자가 아니다(0~9범위에서 벗어나므로)

ok = false;               // 숫자가 아니므로  ok는 false 

  break;                   //숫자가 아니라서 for문 탈출 

  }

}

return ok;               // 숫자면 ok==ture 반환  -> 어디에? numberCheck(numStr);이 ok가 되도록 ?

}

 

 

static String operatorInput() {

Scanner sc = new Scanner(System.in);

String oper = "";             //oper이라는 문자열 변수 초기화

while(true) {

System.out.print("연산(+, -, *, /) = ");

oper = sc.next();          //위에서 초기화된 oper에 위에 입력된 값 대입

if(oper.equals("+") || oper.equals("-") || oper.equals("*") || oper.equals("/")) {

break;       //연산자를 위의 조건에 맞게 입력했으면 while문 탈출. oper에 입력 받은 값 그대로 저장.

}

System.out.println("연산자를 정확히 입력해 주십시오"); //조건에 맞지 않으면 정확히 입력하라 요청. 계속 while문 반복.

}

return oper;          //while 문 탈출한 뒤 저장한 oper를 String oper;에 반환

}

 

 

static int calculator(int number1, int number2, String oper)//파라미터에 number1,number2, oper

int result = 0;

switch(oper) {

case "+":                                               //oper의 값중 +인 경우

result = number1 + number2;                    //result에 number1+number2 대입하고 switch문 탈출

break;

case "-":

result = number1 - number2;

break;

case "*":

result = number1 * number2;

break;

case "/":

result = number1 / number2;

break;

}

return result;                                                           //해당하는 result 값 반환

}

 

 

 

static void resultPrint(int number1, int number2, String oper, int result) {

System.out.println(number1 + " " + oper + " " + number2 + " = " + result);

}

}

Comments