java - 在输入 String 而不是 int 后热阻止程序崩溃

标签 java jgrasp

当输入字符串而不是整数时,如何阻止崩溃? 这是我所拥有的。我尝试查找一些教程,但仍然无法弄清楚。 谢谢你们的帮助。当输入字符串时,我需要它告诉用户输入 int

import java.util.Scanner;

    public class TaxCalc
    {
        public static void main(String [] args)
        {
          Scanner keyboard = new Scanner(System.in);

          int dependents = inputInt("Enter number of dependents: ", keyboard);

          int pigs = inputInt("Enter number of pigs: ", keyboard);

          double oinks= inputInt("Enter number of oinks: ", keyboard) -(pigs*500)+(200*dependents);

          System.out.println("Oinks after rewards: " + oinks);

          if(oinks<10000) oinks -= oinks*0.02; //2% tax
          else if(oinks<5000) oinks -= oinks*0.1; //10% tax
          else oinks -= oinks*0.2; //20% tax
          System.out.println("Oinks after penalties: " + oinks);
        }

    public static int inputInt(String prompt, Scanner keyboard){
        System.out.println(prompt);
        return keyboard.nextInt();
    }

    public double inputDouble(String prompt, Scanner keyboard){
        System.out.println(prompt);
        return keyboard.nextDouble();
    }
}

最佳答案

通过检查InputMismatchException,您可以通知用户他们输入了无效的输入,并且您可以要求他们仅重新输入数字。

public static int inputInt(String prompt, Scanner keyboard) {
        System.out.print(prompt);
        try{
            return keyboard.nextInt();
        } catch (InputMismatchException e){
            System.out.println("Input Mismatch! Please enter Numbers");
            keyboard.next();
            return inputInt(prompt, keyboard);
        }
}

双倍也一样

希望你能预料到这一点。如果没有,请评论您的要求。

关于java - 在输入 String 而不是 int 后热阻止程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26375630/

相关文章:

java - 需要帮助将 TAB 写入 toString 方法

c++ - Jgrasp C++ 编译问题

java - Math.abs()报错: cannot find symbol

java - Android:阻止虚拟键盘上的按键

java - Spring Data Rest 的 url 格式为/foo/{id}/bar

java - 如何检查 Gradle CopySpec 是否将其导出为文本表示形式?

java - 如何创建 equals 方法

java - Robocode 在 Eclipse 中运行

java - 处理 XML 数据的特殊字符以在 Java 中解析

java - 如何在同一行上获得多个输入而没有空格