2017-10-14 11 views
-2

J'ai un problème avec le scanner. Quand je compile, il n'y a pas de problèmes. mais quand je veux lancer ce programme, j'ai une exception. Quelqu'un d'entre vous peut-il m'expliquer la raison de ce problème?Exception Java avec scanner

import java.util.Scanner; 
public class CiagArytmetyczny { 

    public static void main(String[] args) { 
     Scanner s = new Scanner("System.in"); 
     System.out.println("Podaj dlugosc ciagu: "); 
     int dl = s.nextInt(); 
     int element = 2; 

     for(int i=1; i<=dl; i++) { 
      element=element+3; 
      System.out.println(element); 

     } 
    } 
} 

Podaj długość ciagu:

Exception in thread "main" java.util.InputMismatchException 
    at java.util.Scanner.throwFor(Scanner.java:864) 

    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 CiagArytmetyczny.main(CiagArytmetyczny.java:8) 

processus terminé.

+0

l'entrée est la touche entrée? – SMA

+3

pas la solution mais il devrait être 'nouveau Scanner (System.in);' –

+0

Vous semblez avoir un malentendu au sujet des exceptions d'exécution et de compilation –

Répondre

0

Vous avez un problème dans cette ligne

Scanner s = new Scanner("System.in"); 

Vous passez une chaîne au constructeur du scanner. Selon les docs java (Scanner(String source)), un nouveau scanner produisant des valeurs analysées à partir de la chaîne spécifiée sera renvoyé. Selon le reste de votre programme, une chaîne avec un numéro doit être fournie pour que le scanner puisse être détecté dans la ligne suivante.

int dl = s.nextInt(); 

Si vous avez l'intention de recevoir des entrées de la console, veuillez modifier l'initialisation du scanner comme suit. Il y a peu plus de constructeurs à Scanner, je vous suggère de regarder the java docs.

Scanner s = new Scanner(System.in); 

Ceci donnera le flux d'entrée de la console au scanner.