전체 프로그램을 구성하는 부분과 프로그램 내부에서 각각 1,2,3번을 선택했을 때 하는 동작을 구성하는 부분 이렇게 2가지로 나눌 수 있겠다.
전체 프로그램 구성 : 메뉴 출력 반복문으로 구현. 0을 눌렀을 때 break문으로 현재 반복문(outer while문)을 탈출하여 프로그램 종료 가능. 예외상황 처리-1~3 사이 번호가 아닐 때.
1,2,3번 입력받았을 때 동작 구현 : 1/2/3번을 을 때, num을 입력받아 제곱값/제곱근/로 제공. 99번을 받으면 전체 프로그램 종료기 때문에 break outer;를 통해 outer 반복문을 탈출하여 전체 프로그램 종료한다. 기능 구현 후에는 현재 반복문을 탈출하여 프로그램 메뉴로 다시 돌아가도록 한다.
import java.util.*;
class calculator {
public static void main(String[] args) {
int menu = 0, num = 0;
Scanner scanner = new Scanner(System.in);
outer://아래의 while문에 이름을 붙여준다.
while(true) {
System.out.println("(1) square");
System.out.println("(2) square root");
System.out.println("(3) log");
System.out.print("원하는 메뉴(1~3)를 선택하세요.(계산 종료:0, 전체 종료:99)>");
String tmp = scanner.nextLine();
menu = Integer.parseInt(tmp);
if(menu == 0) {
// System.out.println("프로그을 종료합니다.");
break;
}else if(!(1 <= menu && menu <= 3)) {
System.out.println("메뉴를 잘못 선택하셨습니다.(종료는0)");
continue;//아래의 코드들을 실행하지 않고 넘어간다.
}
//계산을 하는 부분.일종의 함수를 호출하여 실행하고, 실행한 다음에는 break문으로 종료하는.
for(;;) {//무한반복문을 의미하는 for
System.out.print("계산할 값을 입력하세요.(계산 종료:0, 전체 종료:99)>");
tmp = scanner.nextLine();
num = Integer.parseInt(tmp);
if(num == 0) {
break;//계산 종료. 현재의 for문만 탈출!
}
if(num == 99) {
break outer;//전체 종료. 현재의 for문과 while문을 모두 탈출!
}
switch(menu) {
case 1:
System.out.println("result="+num*num);
break;
case 2:
System.out.println("result="+Math.sqrt(num));
break;
case 3:
System.out.println("result="+Math.log(num));
break;
}
}//for문 끝
}//while문 끝
System.out.println("프로그램을 종료합니다!");
}
}