본문 바로가기
문제풀이/Java

[Java] 계산기(Calculator)

by AngieLee 2021. 5. 15.
import java.util.*;

public class Calculator {

	public static void main(String[] args) {
		Scanner scr = new Scanner(System.in);
		
		String str1, str2;
		String oper;
		
		// 첫번째 수
		while(true) {
			System.out.print("첫번째 수: ");
			str1 = scr.nextLine();
			
			if(str1.equals("") == true) {
				System.out.println("숫자를 정확하게 입력해 주세요");
				continue;
			}
			
			// 문자가 포함인가? -> 다시 입력
			boolean check = true;
			for (int i = 0; i < str1.length(); i++) {
				char c = str1.charAt(i);
				int asc = (int) c;
				if(asc < 48 || asc > 57) {
					check = false;
					break;
				}
					
			}
			/*
			if(check == true) {
				System.out.println("모두 숫자로 되어있습니다");
				break;
			}
			System.out.println("문자가 포함되어 있습니다. 숫자를 다시 입력해 주세요");
			*/
			if(check == false) {
				System.out.println("문자가 포함되어 있습니다. 숫자를 다시 입력해 주세요");
				continue;
			}
			System.out.println("모두 숫자로 되어있습니다");
			break;
		}
		
		// 연산자
		// 다른 문자가 입력이 되었는지? -> 다시 입력
		while(true) {
			System.out.print("연산자(+, -, *, /): ");
			oper = scr.nextLine();
			if(oper.equals("+") || oper.equals("-") || oper.equals("*") || oper.equals("/")) {
				System.out.println("정상적인 연산자 입력");
				break;
			}
			System.out.println("정확한 연산자를 입력해 주세요");
		}
		
		// 두번째 수
		while(true) {
			System.out.println("두번째 수: ");
			str2 = scr.nextLine();
			
			if(str2.equals("") == true) {
				System.out.println("숫자를 정확하게 입력해 주세요");
				continue;
			}
			
			//문자가 포함인가? -> 다시입력
			boolean check = true;
			for (int i=0; i<str2.length(); i++) {
				char c = str2.charAt(i);
				int asc =(int) c;
				if (asc < 48 || asc > 57) {
					check = false;
					break;
				}
			}
			
			if (check == false) {
				System.out.println("문자가 포함되어 있습니다. 숫자를 다시 입력하세요");
				continue;
			}
			
			// 연산자 '/' -> 0  다시 입력
			if(oper.equals("/") && str2.equals("0")) {
				System.out.println("계산할 수 없는 값입니다");
				continue;
			}
			
			System.out.println("모두 숫자로 되어있습니다");
			break;
		}
		
		// 문자열 -> 숫자
		int num1, num2;
		num1 = Integer.parseInt(str1);
		num2 = Integer.parseInt(str2);
		
		// 연산
		switch (oper) {
		case "+" :
			System.out.println("결과는: "+ (num1 + num2));
			break;
		case "-" :
			System.out.println("결과는: "+ (num1 - num2));
			break;
		case "*" :
			System.out.println("결과는: "+ (num1 * num2));
			break;
		case "/" :
			System.out.println("결과는: "+ (num1 / num2));
			break;
		}
		
	}
}