1

当输入 String 而不是 int 时,如何阻止它崩溃?这就是我所拥有的。我已经尝试查找一些教程,但我仍然无法弄清楚。谢谢你们的帮助。当输入一个字符串时,我需要它来告诉用户输入一个 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();
    }
}
4

5 回答 5

2

通过检查 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);
        }
}

双倍也一样

希望你期待这个。如果不是,请评论您的要求。

于 2014-10-15T07:00:45.383 回答
0

利用

try
{
  // Code here 
}
catch (Exception e)
{
  // Do anything in case of error
}
于 2014-10-15T06:19:59.730 回答
0

http://www.tutorialspoint.com/java/java_exceptions.htm

这个网站展示了如何在 Java 上进行异常处理,基本上是做类似的事情

try {
    int dependents = inputInt("Enter number of dependents: ", keyboard);
}
catch(Exception e) {
    //do something because an error occured
}
于 2014-10-15T06:22:21.990 回答
0

Nonono,如果可以避免的话,不要使用异常(至少不要使用异常,因为有 NumberFormatException)。

如果您想确保只输入数字,请使用

public double inputDouble(String prompt, Scanner keyboard){
  try {
   while (!keyboard.hasNextInt()) keyboard.next();
   return keyboard.nextInt();
  } catch (NumberFormatException e) {
    return 0; //not a numeric at all. 
  }
}
于 2014-10-15T06:25:57.247 回答
0

我想,它对你有用。

public static int inputInt(String prompt, Scanner keyboard){
    System.out.println(prompt);
    if(keyboard.hasNextInt())
            return keyboard.nextInt();
    else {
            System.out.println("please input a number");
            keyboard.next();
            return inputInt(prompt,keyboard);
    }
}
于 2014-10-15T10:29:28.513 回答