2016-03-23 7 views
2

Was ist das Problem mit dem Objekt Scanner in diesem Code?Fehler bei der Verwendung von Scanner in Java

void exp03(){ 
    System.out.println("---CREATION DES POINTS---"); 
    char res = 'O'; 
    Scanner sc = new Scanner(System.in); 
     do{ 
     Point a = new Point(); 
     try{ 
     System.out.println("Entrez la valeur du coordonnée du point suivant X"); 
     double resx = sc.nextDouble(); 
     a.setX(resx); 
     System.out.println("Entrez la valeur du coordonnée du point suivant Y"); 
     double resy = sc.nextDouble(); 
     a.setY(resy); 
     } 
     catch(CoorExp e){ 
     System.out.println("ERREUR:coordonnée négative!"); //exit 
     } 
     System.out.println("1- Afficher le point creer"); 
     System.out.println("2- Deplacer le point creer"); 
     int i = sc.nextInt(); 
     switch (i){ 

     case 1 : 
      break; 

     case 2 : 
      System.out.println("entrer la valeur de deplacement suivant X"); 
      double depx =sc.nextDouble(); 
      a.setDx(depx); 
      System.out.println("entrer la valeur de deplacement suivant Y"); 
      double depy =sc.nextDouble(); 
      a.setDy(depy); 
      a.deplace(depx, depy); 
      System.out.println("Nouvelles coordonnées du point"); 
      a.affiche(); 
      break; 
     default: 
      System.out.println("Choix Incorrect ! "); 


     } 
     System.out.println("Voulez vous creez un autre point ? O/N");//exception 
     res = sc.next().charAt(0); 
     } 
     while(res == 'O'); 

} 

Als ich Fall wählte 2, bekomme ich diesen Fehler:

> Exception in thread "main" java.util.InputMismatchException 
> java.util.Scanner.throwFor(Scanner.java:864) 
> java.util.Scanner.next(Scanner.java:1485) 
> java.util.Scanner.nextDouble(Scanner.java:2413) 
> com.mbisc.java.Test.exp03(Test.java:115) 
> com.mbisc.java.Test.<init>(Test.java:9) 
> com.mbisc.java.Test.main(Test.java:137) 

i Sache, dass Scanner zunächst als int deklariert und jetzt, nachdem der Schalter i sammelt Antwort mit einer Art Doppel. Ich bin mir nicht sicher, und ich muss mehr verstehen, wie die Scanner-Klasse funktioniert.

Antwort

0

Erstens müssen Sie prüfen, ob ein double gelesen hatte:

if (sc.hasNextDouble()) 
    double depx = sc.nextDouble(); 

Es kann sein, dass ein double nicht da ist.


Oder Sie sollten eine Locale für Ihre Scanner angeben.

Scanner sc = new Scanner(System.in).useLocale(Locale.US); 
+1

(Y) DANKE Sie, ich habe eine Lical für meine Antwort und es funktioniert sehr gut!^_ ^ –

Verwandte Themen