2016-03-23 3 views
2

В чем проблема с сканером объектов в этом коде?Ошибка при использовании сканера в 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'); 

} 

Когда я выбрал случай 2, я получаю эту ошибку:

> 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) 

я вещь, это то, что сканер сначала объявить как междунар и теперь после включения я собирать ответ с типом двойным. Я не уверен, и мне нужно больше понять, как работает класс сканера.

ответ

0

Во-первых, вы должны проверить, был ли double прочтенных:

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

Это может быть, что double не существует.


Или вы должны сформулировать Locale для вашего Scanner.

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

(Y) СПАСИБО. У меня есть личный текст для моего ответа, и он работает очень хорошо!^_ ^ –

Смежные вопросы