我是一个完全的初学者,尝试编写一段代码来打印一个数字的阶乘。我希望用户可以输入任何可能的数字,但如果他们输入的不是正整数,程序会告诉他们需要重新尝试。但当我运行代码并尝试输入 '5.5' 时,我得到了一个编译错误。我无法弄清楚问题出在哪里。到底是什么出错了?
package javaExercises;
import java.util.Scanner;
public class Fac {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
try {
double result = 1; //initialize our result variable
System.out.println("Enter a positive integer: ");
double fac = in.nextDouble();
if (fac != (int) fac)
System.out.println("Your entry is not an integer.");
else if (fac < 0)
System.out.println("Your entry is negative.");
else if (fac == 0)
System.out.println("The factorial of 0 is 1.");
else {
for (double i = fac; i > 1; i--)
result *= i;
System.out.println("The factorial of " + Math.round(fac) + " is " + Math.round(result) + ".");
}
} finally {
in .close();
}
}
}
我收到的错误信息:
Enter a positive integer: 4.5 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
javaExercises.Fac.main(Fac.java:16) –
,
作为小数点? - Peter Lawrey