java 使用双精度扫描仪时出错
Error in java using Scanner with 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);
}
}
所以我有两个"double"类型的变量(n1和n2),运算结果(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);
}
}
你能给我解释一下吗?提前致谢!
这可能是一个本地化问题(您当前的语言似乎是意大利语),小数点是逗号而不是点。尝试设置 Locale
的 Scanner
:
Scanner input = new Scanner(System.in);
input.useLocale(Locale.ENGLISH);
或者,您可以将输入作为 3,3
而不是 3.3
。
您的代码似乎没有错误。
java.util.InputMismatchException
如果您在 运行 程序时提供了错误的输入,例如字符串值而不是数值,则可能会发生此错误。
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 错误,则可能是您输入的格式不是双精度。
看看-
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)
我刚开始学习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);
}
}
所以我有两个"double"类型的变量(n1和n2),运算结果(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);
}
}
你能给我解释一下吗?提前致谢!
这可能是一个本地化问题(您当前的语言似乎是意大利语),小数点是逗号而不是点。尝试设置 Locale
的 Scanner
:
Scanner input = new Scanner(System.in);
input.useLocale(Locale.ENGLISH);
或者,您可以将输入作为 3,3
而不是 3.3
。
您的代码似乎没有错误。
java.util.InputMismatchException
如果您在 运行 程序时提供了错误的输入,例如字符串值而不是数值,则可能会发生此错误。
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 错误,则可能是您输入的格式不是双精度。
看看-
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)