2017-10-08 10 views
0

Qu'est-ce que j'ai fait de mal ??Exception dans le fil "principal" java.util.NoSuchElementException sur mon code?

Les erreurs sont les suivantes:

Exception dans le thread "principal" java.util.NoSuchElementException
à java.util.Scanner.throwFor (Scanner.java:862)
à java.util.Scanner .next (Scanner.java:1485)
à java.util.Scanner.nextInt (Scanner.java:2117)
à java.util.Scanner.nextInt (Scanner.java:2076)
à MyClass.main (MyClass.java:14)

Voici le code:

import java.util.Scanner; 
import java.util.Random; 
public class MyClass { 
public static Scanner scan = new Scanner(System.in); 
public static void main(String args[]) { 
    int person,ai,aiint; 
    Scanner scan = new Scanner(System.in); 
    Random rand = new Random(); 

    System.out.println("Let's Play rock paper scissors! press 1 for rock 2 for paper 3 for scissors "); 
    System.out.println(); 
    aiint=rand.nextInt(3)+1; 
    System.out.println("Enter your play: "); 
    person=scan.nextInt(); 
    System.out.println("Computer play is: " +aiint); 
    System.out.println("Your play is:" +person); 
    if (person==aiint) { 
     System.out.println("It's a tie!"); 
    } 
    else if (person==1){ 
      if(aiint==2){ 
       System.out.println("Paper beats rock, you lose!"); 
      } 
      else if(aiint==3){ 
       System.out.println("Rock beats scissors, you win!"); 
      } 
     } 
    else if (person==2){ 
      if(aiint==1){ 
       System.out.println("Paper beats rock, you win!"); 
      } 
      else if (aiint==3){ 
       System.out.println("Scissors beats paper, you lose!"); 
      } 
     } 
    else if (person==3){ 
     if(aiint==1){ 
      System.out.println("Rock beats scissors, you lose!"); 
     } 
     else if(aiint==2){ 
      System.out.println("Scissors beats paper. you win!"); 
     } 
    }  
    } 
} 
+3

une raison quelconque vous instanciez 'nouveau Scanner (System.in)' deux fois? –

+0

Juste essayé le code moi-même. Fonctionne bien, aktually. – Duke

Répondre

0

Votre code fonctionne bien.

Mais puisque vous avez mentionné NoSuchElementException, il est levé lorsque vous essayez de lire quelque chose à partir du Scanner mais les Scanner n'ont rien à lire.

De la documentation de Scanner#nextInt()

@throws NoSuchElementException si l'entrée est épuisé

Pour l'empêcher, vous devriez vérifier si un élément existe dans le Scanner:

if(scan.hasNextInt()){ 
    person = scan.nextInt(); 
} else { 
    //show error 
    return; 
}