Java 언어로 간단한 사전 프로그램을 만들고 있는데 문제가 발생하여 질문드립니다.
조회수 2709회
public class MainWindow {
public static void main(String[] args) {
int selectMenu = 0;
String inputWord = null;
String[] wordArray = new String[20];
WordPlusMinus wordPlusMinus = new WordPlusMinus();
WordSearch wordSearch = new WordSearch();
Scanner scanner = new Scanner(System.in);
/*
* 입력될 단어 : 가시버시, 고스러지다, 고운매, 고주리미주리, 곧추, 곧추다, 곧추뜨다, 골무, 곰방대, 곰삭다, 곰살궃다, 곱새기다, 괴괴하다, 군입정, 기스락, 길라잡이, 길섶, 꺽쇠, 나풀나풀, 냇
*/
while(true) {
System.out.println("==============================================");
System.out.println("사전 프로그램.\t\n");
System.out.println("0.단어 입력.\n1.단어 조회.\n2.단어 뜻 찾기.\n3.단어 추가 및 지우기.\n4.프로그램 종료.");
System.out.print("원하는 메뉴 번호를 입력하세요 : ");
selectMenu = scanner.nextInt();
switch(selectMenu) {
case 0:
for(int i = 0; i < wordArray.length; i++) {
System.out.print("단어를 입력하세요 : ");
inputWord = scanner.nextLine();
wordArray[i] = inputWord;
}
break;
case 1:
for(int i = 0; i < wordArray.length; i++) {
System.out.println(i + "번 째 단어 : " + wordArray[i]);
}
break;
case 2:
// wordSearch.main(null);
break;
case 3:
// wordPlusMinus.main(null);
break;
case 4:
scanner.close();
System.exit(0);
break;
}
}
}
}
이런 형태로 간단한 사전을 만들고 있습니다. 근데 단어 입력과정에서 다음과 같이 입력 상에 문제가 생기고 단어 입력 후 조회를 할 경우 0 번째 배열 인덱스 안에 값이 null 로 되는데 이유를 모르겟습니다.
또한 while() 문 밖에 scanner.close() 와 System.exit(0) 을 쓰게 되면 Unreachable 이라고 뜨는데 같은 main 메소드 안에 있으면 상관 없는 것 아닌가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
nextInt
의 경우nextLine
과는 다르게 입력된 값을 읽을 때 개행 문자를 포함하지 않습니다. 그래서 0을 입력하고 엔터를 쳤을 경우 개행문자가 입력이 되어서 빈값으로 보이는 것 입니다.가장 간단한 방법은 아래와 같이
scanner.nextLine()
를 추가해서 개행문자를 읽어 들이는 것입니다.selectMenu = scanner.nextInt(); scanner.nextLine(); //추가됨 switch(selectMenu)
다른 방법으로는 아래와 같이 파싱하는 것이 있겠네요.
selectMenu = Integer.parseInt(scanner.nextLine());
- 감사합니다! 미쳐 파싱하는 방법을 생각을 하지 못했었습니다. 근데 마지막에 while() 문 밖에 scanner.close(); 와 System.exit(0); 같은 경우 Unreachable 가 왜 뜨는지 모르겠습니다. 같은 main 메소드 안에 있으면서 while 문에서 스캐너 객체를 생성하지 않아 상관없을 듯 한데 에러가 발생하더라구요.. 알 수 없는 사용자 2016.11.10 09:35
- while문의 조건이 true 이므로 무한루프입니다. while문 밖으로 빠져나올 경우가 없기때문에 해당 코드에 도달할 수 없다고 하는 것 같네요. while문의 조건을 selectMenu != 4 로 한다면 에러메세지가 사라질 것 같네요 김선우 2016.11.10 10:12
- 아.. 이런 미묘한 차이를 간파하지 못한 것 같네요.. 정말 좋은 답변 감사합니다. 알 수 없는 사용자 2016.11.11 15:46
댓글 입력