在Java中输入除number之外的其他内容时防止崩溃

时间:2016-01-25 04:31:20

标签: java java.util.scanner

我正在研究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%的税,但是当输入一个字母或任何非数字的程序时程序崩溃。理想情况下,如果输入的数字以外的任何内容,我希望显示类似“请输入数字”的内容。我应该怎么做呢?

2 个答案:

答案 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");
}