我刚刚开始学习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);
}
}
你能解释一下吗?提前谢谢!
答案 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)