2016-03-23 58 views
2

Bu koddaki nesne tarayıcısında sorun nedir? Davayı 2 seçtiğindeJava kullanarak tarayıcıda hata oluştu

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

} 

, bu hatayı alıyorum:

> 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 şey bu tarayıcı ilk olarak bir int olarak ilan edilir ve şimdi anahtarından sonra ben çift türüyle cevap toplamak. Oldukça emin değilim ve tarayıcı sınıfının nasıl çalıştığını daha fazla anlamaya ihtiyacım var.

cevap

0

Öncelikle bir double okundu olup olmadığını kontrol etmek zorunda:

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

Bu double olmadığını olabilir.


Ya da Scanner için Locale belirtmelidir.

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

(Y) TEŞEKKÜR EDERİM, benim cevabım için bir lical devletim var ve çok iyi çalışıyor!^_ ^ –

İlgili konular