升序排列三个浮点数

时间:2018-11-09 19:03:49

标签: java

import java.util.Scanner;

public class Crescente {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        double primo = in.nextDouble();
        double secondo = in.nextDouble();
        double terzo = in.nextDouble();
        if(primo > secondo && primo > terzo) {
            if(secondo > terzo) {
                System.out.println(primo+" "+secondo+" "+terzo);
            }else {
                System.out.println(primo+" "+terzo+" "+secondo);
            }
        }else if(secondo > primo && secondo > terzo) {
            if(primo > terzo) {
                System.out.println(secondo+" "+primo+" "+terzo);
            }else {
                System.out.println(secondo+" "+terzo+" "+primo);
            }
        }else if(terzo > primo && terzo > secondo) {
            if(primo > secondo) {
                System.out.println(terzo+" "+primo+" "+secondo);
            }else {
                System.out.println(terzo+" "+secondo+" "+primo);
            }
        }
        in.close();
    }
}

如果您输入整数,我的程序会运行,但是如果输入浮点数,则会出现此错误:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Scanner.java:939)
    at java.base/java.util.Scanner.next(Scanner.java:1594)
    at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
    at poo.Crescente.main(Crescente.java:8)

我不知道为什么会出现此错误,因为我对所有nextDouble的所有变量都使用了double。请帮忙。

1 个答案:

答案 0 :(得分:1)

就像您来自意大利一样,您的默认语言环境似乎设置为LOCALE.ITALY。将其更改为以下

Scanner in = new Scanner(System.in);
in.useLocale(Locale.ENGLISH);
// rest of the code

通过分别切换Locale.ITALYLocale.ENGLISH,我能够用逗号分隔的数字(4,2)和十进制分隔的数字(4.2)运行该程序。

来自文档:

useLocale(Locale locale)
     

将此扫描仪的语言环境设置为指定的语言环境。