2014-06-09 5 views
0

이 부분은 restoraunt의 이름을로드하고 메뉴 이름, 식사 이름 및 가격을로드해야합니다. 그러나 실행하면 모든 이름이 적용되고 마지막으로 가격이 책정됩니다. 내가 예를 7.2에 대한 입력 및 얻을 입력 불일치 예외 내가 프로그램의 입력을 이해한다면Java, 스캐너, 입력 불일치 예외

String newMenu = ""; 
    String newRestaurant = ""; 
    String[] newMenuItem = new String[10]; 
    double[] price = new double[10]; 
    int x = 0; 


     while (!(newMenu.equals("none"))) { 
      System.out.println("What is the name of the Menu you wish to create (type 'none', if you are done):"); 
      newMenu = scan.next(); 
      if (newMenu.equals("none")) { 
       System.out.println("Saving entry..."); 
       continue; 

      } else { 


       System.out.println("What is the name of the Menu item you wish to create (type 'none', if you are done):"); 
       newMenuItem[x] = "end"; 
       while (!(newMenuItem[x].equals("none"))) { 
       newMenuItem[x] = scan.next(); 

       if (!(newMenuItem[x].equals("none"))) { 
        System.out.println("What is the price?"); 
        price[x]= scan.nextDouble(); 
        x++; 


        }  
       }  
       } 
      } 
+0

예, 이번에는 코드가 훨씬 깔끔하게 정리되어 있습니다. 많은 것들이 고정되어 있습니다. 마지막으로 퍼즐의 마지막 부분입니다. 입력 한 숫자가 작동하는 경우, awsome bcs 인 오전 4 시가 완료되었습니다. 그리고 나는 약간의 수면이 필요합니다. 내일 아침에 전에 이것을 넘겨 줄 필요가 있습니다. – user2627736

+0

@ user2627736 오류를 게시하십시오. –

+0

스레드 "main"의 예외 java.util.InputMismatchException \t at java.util. Scanner.throwFor (Scanner.java:909) \t at java.util. Scanner.next (Scanner.java:1530) \t at java.util. Scanner.nextDouble (Scanner.java:2456) \t at RestaurantTest2.main (RestaurantTest2.java:80) Btw, line 80은 "price [x] = scan.nextDouble();"입니다. – user2627736

답변

0

, 가장 간단한 해결책은

while (!scan.hasNextDouble()) { 
    // The next token isn't a double. 
    if (scan.hasNext()) { 
    scan.next(); 
    } else { 
    System.err.println("Nothing to read"); 
    System.exit(1); 
    } 
} 

, 라인 79과 80 사이의이 같은 것을 추가하는 것입니다 현재, 때문에 Scanner에 다음 기호가 없습니다. double.