2017-10-10 15 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

です。 – Andreas

答えて

1

あなたのエラーは純粋に論理エラーです。あなたはどこにいてもいけません。 また、nextInt()でEnterキーが生成する/ n "改行"を使用していません。

ネストされたifの自己開始/終了コメントを混同しないようにするには ifを作成し、空白を使用してすべてを配置するときに、フレームの作業を作成することをお勧めします。

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

は、ここで「あなたはスキャナや入力が間違っているかを調べるにはどうすればよい?」* `nextInt`を呼び出す前に` hasNextInt`を呼び出す*あなたの修正コード

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!"); 
     } 
    } 
} 
関連する問題