我正在研究java中一个非常简单的税收计算器,看看我的技能在一些基本课程之后的位置,我有基本的功能,但我试图使计算器能够处理错误而没有崩溃。这是我的代码的样子:
import java.util.Scanner;
public class Application {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the principle");
float principle = scanner.nextFloat();
System.out.println("Your total with tax is: " + principle * 1.07);
所以我运行我的代码,它可以正确地为输入的原则添加7%的税,但是当输入一个字母或任何非数字的程序时程序崩溃。理想情况下,如果输入的数字以外的任何内容,我希望显示类似“请输入数字”的内容。我应该怎么做呢?
答案 0 :(得分:0)
在进行数学运算之前,您必须验证扫描仪输入,尝试将字符串转换为float,
try
{
float f = Float.valueOf(scanner.next....);
System.out.println("float f = " + f);
System.out.println("Your total with tax is: " + principle * 1.07);
}
catch (NumberFormatException nfe)
{
System.out.println("NumberFormatException: " + nfe.getMessage());
}
答案 1 :(得分:0)
您需要做的是异常处理。
当用户输入无法解析为float的内容时,会抛出异常,这就是程序崩溃的原因。要处理此异常,您只需要包含可能发生异常的代码。在这种情况下,它是:
float principle = scanner.nextFloat();
System.out.println("Your total with tax is: " + principle * 1.07);
您应将其更改为:
try {
float principle = scanner.nextFloat();
System.out.println("Your total with tax is: " + principle * 1.07);
}
然后,您需要添加一个catch
块来指定发生异常时应该执行的操作。
try {
...
} catch (NumberFormatException ex) {
System.out.println("Input Invalid");
}
这里我写了NumberFormatException
,因为当它无法解析浮点数时,会发生NumberFormatException
(具体)。
整个代码是:
try {
float principle = scanner.nextFloat();
System.out.println("Your total with tax is: " + principle * 1.07);
} catch (NumberFormatException ex) {
System.out.println("Input Invalid");
}