【问题标题】:Error using Scanner in java在 java 中使用 Scanner 时出错
【发布时间】:2016-03-23 11:32:10
【问题描述】:

这段代码中的对象扫描器有什么问题?

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

}

当我选择 case 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)

我认为扫描仪首先声明为 int,现在在切换后我收集带有 double 类型的答案。我不太确定,我需要更多地了解扫描仪类的工作原理。

【问题讨论】:

    标签: java string switch-statement double java.util.scanner


    【解决方案1】:

    首先你必须检查double是否被读取:

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

    可能double 不存在。


    或者你应该为你的Scanner声明一个Locale

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

    【讨论】:

    • (Y) 谢谢你,我已经为我的答案声明了一个 lical,它的效果非常好! ^_^
    猜你喜欢
    • 2019-11-08
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多