2017-10-10 12 views
-2

Cette erreur m'énerve.Exception dans le fil "principal" java.util.NoSuchElementException (comment corriger l'erreur)

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) 

Mon code:

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!");} 


    } 
} 

Vous voulez mettre fin à l'ensemble du programme si l'entrée est incorrecte. Vous ne savez pas exactement ce qui ne va pas. Été bloqué sur cela pendant un certain temps maintenant. Comment trouvez-vous ce qui ne va pas avec le scanner et les entrées?

+0

* "Comment trouvez-vous ce qui ne va pas avec le scanner et les entrées?" * Appel 'hasNextInt' avant d'appeler' nextInt'. – Andreas

Répondre

1

Vos erreurs sont purement logiques. Vous avez des} partout où ils ne devraient pas être. Vous ne consommez pas non plus la/n "Nouvelle ligne" que vous appuyez sur Entrée génère sur nextInt(). Pour éviter toute confusion, utilisez les commentaires d'ouverture et de fermeture sur les imbriqués Il est recommandé de créer votre cadre de travail lors de la création de if et de tout espacer à l'aide des espaces.

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

Voici votre code corrigé

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!"); 
     } 
    } 
}