异常线程“main” java.util.NoSuchElementException(如何修复错误)

问题描述:

这个错误让我的神经。异常线程“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

您的错误纯属逻辑错误。你有他们不应该的地方。 您还没有消耗/ 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!"); 
     } 
    } 
}