요구사항에 부합하는지 검토 파트 중0을 입력하면 프로그램이 ‘뒤로가기’되거나 ‘종료’됩니다.Kiosk.java
. . . if (input == 0 ) { System.out.println("키오스크를 종료합니다."); break; } else if (input <= menuItems.size()) { System.out.println("선택한 메뉴 : "+ menuItems.get(input - 1)); break; } else { System.out.println("다시 입력해주세요."); continue;// 숫자 이외의 입력을 받았을 때 나오는 문구 } . .
catch(NumberFormatException nfe) { }
구상해야하는 코드의 흐름:
1) try 문 : 사용자 입력 --> 입력값을 정수로 전환(parseDouble)
2) catch 문 :
try { // 1. 위험한 메소드의 실행을 "시도" 해 봅니다. // "시도" 해보는 코드가 들어가는 블럭입니다. ourClass.thisMethodIsDangerous(); } catch (OurBadException e) { // 2. 예외가 발생하면, "잡아서" handling 합니다. // 예외가 발생하는경우 "handling" 하는 코드가 들어가는 블럭입니다. // 즉 try 블럭 내의 구문을 실행하다가 예외가 발생하면 // 예외가 발생한 줄에서 바로 코드 실행을 멈추고 // 여기 있는 catch 블럭 내의 코드가 실행됩니다. System.out.println(e.getMessage()); } finally { // 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다. // 무조건 실행되는 코드가 들어가는 블럭입니다. System.out.println("우리는 방금 예외를 handling 했습니다!"); }
System.out.println("번호를 입력하세요: "); int input = scanner.nextInt();// 숫자를 입력 받기 if (input == 0 ) { System.out.println("키오스크를 종료합니다."); break; } try{ int number = Integer.parseInt(input); if (number > 0 && number <= menuItems.size()) { System.out.println("선택한 메뉴 : "+ menuItems.get(input - 1)); break; } else { System.out.println("다시 입력해주세요."); continue;// 숫자 이외의 입력을 받았을 때 나오는 문구 } } catch (NumberFormatException nfe) { System.out.println("숫자를 입력해주세요."); continue; } finally { // 3. 예외의 발생 여부와 상관없이, 실행시켜야 하는 코드가 들어갑니다. // 무조건 실행되는 코드가 들어가는 블럭입니다. System.out.println("입력하신 숫자는 : " + input + "입니다. "); } }
1) 처음 try 문 안에 int 타입의 변수를 그대로 input으로 지정했을 때 이미 위에 input값이 지정되어 있는 것에 대한 문제 발생
-> 임의로 number로 지정
2) int number = Integer.parseInt(input); 에서 input 값이 String으로 지정되어 있어야 하는데 int값으로 제공되는 문제 발생
-> 아예 입력값을 String으로 해도 되나? 싶지만 임의로 String으로 선언
if ("0".equals(input) ) { System.out.println("키오스크를 종료합니다."); break; } ``` ```java System.out.println("선택한 메뉴 : "+ menuItems.get(number - 1)); break; ```
3) 추가적인 문제
String input = in.nextLine();
으로 선언할 경우 in.nextLine();에 붉은 줄이 떴다.
(2) scanner로 변경Scanner scanner = new Scanner(System.in); ```
String input = scanner.nextLine(); ```
드디어 정상적으로 구현됨
