0

我一直试图阻止异常,但我不知道如何。我试过了parseIntjava.util.NormalExceptionMismatch等等。

有谁知道如何解决这个问题?由于复制和粘贴,格式有点偏离。

do
{
   System.out.print(
           "How many integers shall we compare? (Enter a positive integer):");
   select = intFind.nextInt();
   if (!intFind.hasNextInt()) 
       intFind.next();
       {
           // Display the following text in the event of an invalid input
           System.out.println("Invalid input!");
       }
}while(select < 0)

我尝试过的其他方法:

 do
    {
       System.out.print(
                   "How many integers shall we compare? (Enter a positive integer):");
       select = intFind.nextInt();
       {
            try{
                   select = intFind.nextInt();
               }catch (java.util.InputMismatchException e)
            {
               // Display the following text in the event of an invalid input
               System.out.println("Invalid input!");
               return;
            }
       }
    }while(select < 0)
4

3 回答 3

2

在我看来,您想跳过所有内容,直到获得整数。此处的代码跳过除整数以外的任何输入。

只要没有可用的整数(而 (!in.hasNextInt()))就丢弃可用的输入(in.next)。当整数可用时 - 读取它 (int num = in.nextInt();)

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (!in.hasNextInt()) {
            in.next();
        }
        int num = in.nextInt();
        System.out.println("Thank you for choosing " + num + " today.");
    }
}
于 2012-11-13T04:34:48.223 回答
1

如何捕获异常的快速示例:

int exceptionSample()
{
    int num = 0;
    boolean done = false;
    while(!done)
    {
        // prompt for input
        // inputStr = read input
        try {
            num = Integer.parseInt(inputStr);
            done = true;
        }
        catch(NumberFormatException ex) {
            // Error msg
        }
    }
    return num;
}
于 2012-11-13T04:10:57.483 回答
0

IMO,最佳做法是使用nextLine()获取字符串输入,然后parseInt获取整数。如果无法解析,只需向用户投诉并请求重新输入。

请记住,您可能需要再做一次nextLine()(丢弃输入)来清理缓冲区。

于 2012-11-13T04:05:15.453 回答