Java中的用户输入和例外



我想根据用户输入将整数添加到列表中。用户必须键入他/她希望的所有整数,然后按Enter。如果他们完成输入整数,则应该按" Enter"按钮而无需输入任何内容。

我做了我的代码,但是有几个错误

例外情况一直在弹出,因为每次都说例如输入Integer 10,然后我完成了。我一无所有地按" Enter"。这提出了例外。我如何解决这个问题?

还有另一件事,我该如何制作程序,以便用户将输入无效,而不是崩溃或崩溃。它要求用户再次提示正确的输入。

这就是我所做的

package basic.functions;
import java.util.*;
import java.text.DecimalFormat;
public class Percent {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        reader.useDelimiter(System.getProperty("line.separator"));
        List<Integer> list = new ArrayList<>();
        System.out.println("Enter Integer: ");
        while (true) {
            try {
                int n = reader.nextInt();
                list.add(Integer.valueOf(n));
            } catch (InputMismatchException exception) {
                System.out.println("Not an integer, please try again");
                break;
            }
        }
        reader.close();
   }
}

输出

Enter Integer: 
10
Not an integer, please try again 
[10]

我建议您使用Scanner#hasNextInt确定是否已输入整数。至于"用户按输入而无需输入任何内容" ,我们可以简单地使用String#isEmpty方法。

while (true) {
     if(reader.hasNextInt()) list.add(reader.nextInt());
     else if(reader.hasNext() && reader.next().isEmpty()) break;
     else System.out.println("please enter an integer value");
}

NOTE - 在这种情况下,您无需捕获InputMismatchException,因为它不会被扔。

while (true)通常是一个不好的信号,如果您在代码中有几乎肯定是错误的。

您可能想要的就是这样:

String input;
do {
  input = reader.next();
  // Parse the input to an integer using Integer.valueOf()
  // Add it to the list if it succeeds
  // You will need your try/catch etc here
while (!input.isEmpty());

在这里,循环正在检查出口条件并运行直到达到它为止。您的处理仍在循环内部正常进行,但程序流动得多。

相关内容

  • 没有找到相关文章

最新更新