본문 바로가기
알고리즘 문제연습/기초 알고리즘

[005] 간단한 계산기(사칙연산 기능 구현)

by 은z 2021. 5. 13.

문제

- 사칙연산을 할 수 있는 계산기를 만드세요.

- 단, main에서 메소드를 호출해서 기능구현.

- 숫자를 입력받을 때는 공백이나 문자가 아닌 숫자를 입력받을 것.

- 연산자를 입력받을 때는 사칙연산만 입력받을 것.

 

보완할 점

- " / "연산자를 입력했을 경우에는 0을 입력할 수 없도록 재구성.(-> 추후에 해보기)

- 메소드의 매개변수에 무엇을 전달해야 하는지 잘 생각해보기.

- continue문 적절히 사용해서 다시 while문에 진입하게 하기

 

소스코드

import java.util.Scanner;

public class CalculatorFuction {
		public static void main(String[] args) {

			int num1, num2; 
			String oper;
			
			//첫번째수 입력
			num1 = numberinput("첫번째");
			//연산자입력 
			oper = operator();
			//두번째수 입력
			num2 = numberinput("두번째");
			//연산
			int result = result(num1, num2, oper);
			//결과
			print(num1, num2, oper, result);
		}
		
		static int numberinput(String no) {
			Scanner sc = new Scanner(System.in);
			String str;
			
			while(true) {
				System.out.print( no + " 숫자> ");
				str = sc.nextLine();
				
				if(str.equals("")) {
					System.out.println("공백입니다. 다시 입력하세요");
					continue;
				}
				boolean ischeck = checknumber(str);
				if(ischeck == false) {
					continue;
				}else {
					break;
				}
			}
			return Integer.parseInt(str);
		}
		
		static boolean checknumber(String str) {
			boolean ischeck = true;
			for(int i=0; i<str.length(); i++) {
				char ch = str.charAt(i);
				if('0' > ch || ch > '9') {
					System.out.println("문자가 포함되어있습니다. 다시 입력하세요");
					ischeck = false;
					break;
				}
			}
			return ischeck;
		}
		
		static String operator() {
			Scanner sc = new Scanner(System.in);
			String oper = "";
			
			while(true) {
				System.out.print("수행할 연산을 입력하세요 ( + , - , * , / ) > ");
				oper = sc.next();
				if(oper.equals("+") || oper.equals("-") || oper.equals("*") || oper.equals("/")) {
					break;
				}else {
					System.out.print("올바른 연산자를 입력하세요 ");
					continue;
				}
			}return oper;
		}
		
		static int result(int x, int y, String oper) {
			int result = 0;
			switch(oper) {
				case "+" : 
					result = (x + y);
					break;
				case "-" : 
					result = (x - y);
					break;
				case "*" : 
					result = (x * y);
					break;
				case "/" : 
					result = (x / y);
			}
			return result;
		}
		
		static void print(int x, int y, String oper, int result) {
			System.out.println("수행결과 > " + x + " " + oper +" " + y + " = " + result);
		}
}

댓글