일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nodejs
- JavaScript
- TypeScript
- fragment
- Linux
- array
- 코틀린
- Javscript
- 자바스크립트
- RecyclerView
- SpringBoot
- 랜덤번호
- stylesheet
- 스프링부트
- 오버라이딩
- Kotlin
- 안드로이드
- Hook
- 리액트
- JS
- Android
- TextView
- npm
- 랜덤넘버
- React
- button
- 구글맵스
- scrollview
- Java
- GoogleMaps
- Today
- Total
타닥타닥 개발자의 일상
자바 java로 함수 static 이용해서 사칙연산 계산기 만들기 본문
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);
}
}