使用带有double的Scanner的java出错

时间:2015-08-22 08:34:27

标签: java casting int double

我刚刚开始学习java,我无法自己解决错误。 我编写了一个代码,其目的是在" double"的两个变量之间转换操作的结果。输入一个整数:

import java.util.Scanner;

public class SommaApprossimata {

    public static void main(String[] args) {

        Scanner input = new Scanner(System. in );

        double n1, n2;

        int risultato;

        System.out.println("Inserisci due numeri frazionari:");

        n1 = input.nextDouble();

        n2 = input.nextDouble();

        risultato = (int) n1 + (int) n2;

        System.out.print("Il risultato è: " + risultato);

    }

}

所以我有两个变量(n1和n2)" double"类型,操作的结果(risultato)必须以整数形式表示。

错误是:

Exception in thread "main" java.util.InputMismatchException

如果我不使用Scanner,那么改造就可以了!

public class SommaApprossimataSemplice {

    public static void main(String[] args) {

        double n1, n2;

        int risultato;

        n1 = 3.3;

        n2 = 4.5;

        risultato = (int) n1 + (int) n2;

        System.out.print("Il risultato è: " + risultato);

    }

}

你能解释一下吗?提前谢谢!

3 个答案:

答案 0 :(得分:3)

这可能是本地化问题(您的当前似乎是意大利语),小数点是逗号而不是点。尝试设置Locale的{​​{1}}:

Scanner

或者,您可以将输入作为Scanner input = new Scanner(System.in); input.useLocale(Locale.ENGLISH); 而不是3,3传递。

答案 1 :(得分:0)

您的代码似乎没有错误。

java.util.InputMismatchException

如果在运行程序时提供了错误的输入,则会发生此错误,例如字符串值而不是数值。

答案 2 :(得分:0)

import java.util.Scanner;

public class SommaApprossimata {

    public static void main(String[] args) {

        Scanner input = new Scanner(System. in );

        double n1, n2;

        int risultato;

        System.out.println("Inserisci due numeri frazionari:");

        n1 = input.nextDouble();

        n2 = input.nextDouble();

        risultato = (int) n1 + (int) n2;

        System.out.print("Il risultato è: " + risultato);

    }

}

Output :

//save as : SommaApprossimata.java
//compile as :javac SommaApprossimata.java
//run as : java SommaApprossimata 

Inserisci due numeri frazionari:
2.0
3.0
Il risultato Φ: 5

正如我运行代码一样,它正确地提供输出。

但是如果你收到java.util.InputMismatchException错误,那么你可能会提供除double之外的其他格式输入。

看看 -

Inserisci due numeri frazionari:
abcd
Exception in thread "main" java.util.InputMismatchException
        at java.util.Scanner.throwFor(Unknown Source)
        at java.util.Scanner.next(Unknown Source)
        at java.util.Scanner.nextDouble(Unknown Source)
        at d.main(d.java:16)