2017-10-10 81 views
-2

這個錯誤讓我的神經。異常線程「main」 java.util.NoSuchElementException(如何修復錯誤)

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.Scanner.throwFor(Scanner.java:862) 
    at java.util.Scanner.next(Scanner.java:1485) 
    at java.util.Scanner.nextInt(Scanner.java:2117) 
    at java.util.Scanner.nextInt(Scanner.java:2076) 
    at Main.main(Main.java:266) 
    at Ideone.test(Main.java:72) 
    at Ideone.test(Main.java:32) 
    at Ideone.main(Main.java:23) 

我的代碼:

import java.util.Scanner; 
import java.lang.Math; 

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


     Scanner scan = new Scanner(System.in); 

     System.out.println("Welcome. What is your name?"); 
     String x; 
     x = scan.nextLine(); 

     System.out.println("Hello " + x + ". Try your best to crack the code!"); 
     System.out.println(" "); 

//Phase 1 
     System.out.println("PHASE 1"); 

     System.out.println("Enter a number:"); 
     int y = scan.nextInt(); 
     if (y == 3){ 
     System.out.println("Correct!"); 
     System.out.println(" "); 
//Phase 2 
     System.out.println("PHASE 2"); 
     System.out.println("Enter a number:"); 
     } 
     int z = scan.nextInt(); 
     if (z == 1 || (z >= 33 && z <= 100)){ 
     System.out.println("Correct!"); 
     System.out.println(" "); 
//Phase 3 
     System.out.println("PHASE 3"); 
     System.out.println("Enter a number:");} 
     int c = scan.nextInt(); 
     if (c % 3 == 0 || c % 7 == 0){ 
     System.out.println("Correct!"); 
     System.out.println("You have cracked the code!");} 
     else{ 
     System.out.println("Sorry, that was incorrect!"); 
     System.out.println("Better luck next time!");} 


    } 
} 

要結束的整個程序,如果輸入不正確。 不知道什麼是錯的。 現在已經停留了一段時間。 如何找出掃描儀和輸入有什麼問題?

+0

*「你如何找出什麼是錯的掃描儀和投入?」 *調用'nextInt'之前調用'hasNextInt'。 – Andreas

回答

1

您的錯誤純屬邏輯錯誤。你有他們不應該的地方。 您還沒有消耗/ n的「新行」在按下輸入產生的nextInt()。

爲了避免混淆你的自我使用打開和關閉嵌套if的註釋 當創建if和使用空格將所有內容隔開時,創建框架工作是一種很好的做法。

if(conditon) 
{ 
     if_statement(s); 
} 
else 
{ 
     else_statement(s); 
} 

這是您正確的碼

import java.util.Scanner; 
import java.lang.Math; 

class BrockTaylor 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Welcome. What is your name?"); 
     String x; 
     x = scan.nextLine(); 
     System.out.println("Hello " + x + ". Try your best to crack the code!"); 
     System.out.println(" "); 
     System.out.println("PHASE 1"); 
     System.out.println("Enter a number:"); 
     int y = scan.nextInt(); 
     // consume the /n 
     scan.nextLine(); 
     //Phase 1 
     if (y == 3) 
     { 
      System.out.println("Correct!"); 
      System.out.println(" "); 
      System.out.println("PHASE 2"); 
      System.out.println("Enter a number:"); 
      int z = scan.nextInt(); 
      // consume the /n 
      scan.nextLine(); 
      //Phase 2 
      if (z == 1 || z >= 33 && z <= 100) 
      { 
       System.out.println("Correct!"); 
       System.out.println(" "); 
       System.out.println("PHASE 3"); 
       System.out.println("Enter a number:"); 
       int c = scan.nextInt(); 
       // consume the /n 
       scan.nextLine(); 
       //Phase 3 
       if (c % 3 == 0 || c % 7 == 0) 
       { 
        System.out.println("Correct!"); 
        System.out.println("You have cracked the code!"); 
       } 
       else // phase 3 
       { 
        System.out.println("Sorry, that was incorrect!"); 
        System.out.println("Better luck next time!"); 
       } 
      } 
      else // phase 2 
      { 
       System.out.println("Sorry, that was incorrect!"); 
       System.out.println("Better luck next time!"); 
      } 
     } 
     else// phase 1 
     { 
     System.out.println("Sorry, that was incorrect!"); 
     System.out.println("Better luck next time!"); 
     } 
    } 
} 
相關問題