본문 바로가기

JAVA/기초 프로그래밍

함수// 계산기 만들기

		//Scanner sc = new Scanner(System.in); -> 함수로 빼줌
		
		//계산기
		int num1, num2;
		String oper;//연산자
		int result = 0;
		
		String strNum1, strNum2;
		
		
		
		//TODO: 입력
		strNum1 = numberInput("첫번째 수");
		
		
		/* -> 함수로 빼줌
		while(true) {
			System.out.println("첫번째 수 = ");
			strNum1 = sc.next();
			boolean b = numberOk(strNum1);
			if (b==true) {
				System.out.println("숫자가 아닙니다. 다시 입력해 주십쇼");
				continue;
			}
			break;
		}
		*/
		
		
		/*함수로 빼줌
		boolean noNumber = false;
		for (int i = 0; i < strNum1.length(); i++) {
			char c = strNum1.charAt(i);
			if ((int)c < 48 || (int)c > 57) {
				noNumber = true;
				break;
			}
		}
		*/
		
		
		
		//System.out.println("(+,-,*,/) = ");  ->함수로 빼줌
		//oper = sc.next();
		oper = operatorInput();
		
		
		
		
		//System.out.println("두번째 수 = ");->함수로 빼줌
		//strNum2 = sc.next();
		strNum2 = numberInput("두번째 수");
		
		
		
		
		// 문자열 -> 숫자
		num1 = Integer.parseInt(strNum1);
		num2 = Integer.parseInt(strNum2);
		
	
		
		//TODO: 계산
		result = calProcess(num1, num2, oper);
		
		
		
		//TODO: 결과
		System.out.println(num1+" "+oper+" "+num2+" = "+result);
		
		
	}
	
	static String operatorInput() {
		Scanner sc = new Scanner(System.in);
		String oper;
		
		while(true) {
			System.out.println("(+,-,*,/) = ");
			oper = sc.next();
		
			if (oper.equals("=") || oper.equals("-") == true || 
					oper.equals("*") == true || oper.equals("/") == true) {
				break;
			}
				System.out.println("연산기호가 아닙니다. 다시 입력해 주십쇼");{
			}
		}
		return oper;
	}
	
	static String numberInput(String num12) {//숫자 입력을 받기위한 함수
		Scanner sc = new Scanner(System.in);
		String strNum1;
		while(true) {
			System.out.println(num12+"= ");
			strNum1 = sc.next();
			boolean b = numberOk(strNum1);//numberOk함수를 numberInput에서 호출
			if (b==true) {
				System.out.println("숫자가 아닙니다. 다시 입력해 주십쇼");
				continue;
			}
			break;
		}
		return strNum1;
	}
	
	
	// return : true(숫자가 아님) false(모두 숫자)
	static boolean numberOk(String snum) { //숫자인지 아닌지 판정하기 위한 함수
		
		boolean noNumber = false;
		for (int i = 0; i < snum.length(); i++) {
			char c = snum.charAt(i);
			if ((int)c < 48 || (int)c > 57) {
				noNumber = true;
				break;
			}
		}
		return noNumber;
		
	}
	
	
	static int calProcess(int n1, int n2, String oper) {
		
		int r = 0;;
		switch (oper) {
			case "+":
				r = n1 + n2;
				break;
			case "-":
				r = n1 - n2;
				break;
			case "*":
				r = n1 * n2;
				break;
			case "/":
				r = n1 / n2;
				break;
			}
		return r;