2016-03-23 15 views
2

このコードのオブジェクトスキャナにはどのような問題がありますか?私はケース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'); 

} 

、私はこのエラーを取得する:スキャナは最初のint型として宣言され、現在はスイッチの後に私はdouble型で答えを集めていること

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

私の事。私はかなり確信していないと私はスキャナクラスの仕組みをより理解する必要があります。

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

それはdoubleがないということがあります。

答えて

0

まず、あなたはdoubleが読まれたかどうかを確認する必要があります。


またはあなたのScannerためLocaleを明記してください。

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

(Y)ありがとうございました。あなたは私の回答のために状態を持っており、とてもうまくいきます!^_ ^ –