当前位置: 首页 > 知识库问答 >
问题:

来自用户的单个输入行上的扫描仪输入验证

文志学
2023-03-14

我让一个用户输入一个整数字符串,然后将它们添加到ArrayList,但我需要验证每个条目是否为正整数。我尝试了do/while循环、嵌套while环,而使用嵌套if和每个循环都会遇到自己的一组问题。

作为我当前设置的示例:用户输入例如:1 2 3 4 pageVar是我的扫描仪,pageRef是我的ArrayList

System.out.println("Please enter the page reference string: ");
        while(pageVar.hasNext()) {
            if (pageVar.hasNextInt() && pageVar.nextInt() > 0) {
                pageRef.add(pageVar.nextInt());
            }
            else if (pageVar.nextInt() < 0) {
                System.out.println("Please enter valid page reference string: ");
            }
            else if (!pageVar.hasNext()) {
                pageVar.close();
            }
        }

运行这个my while在等待更多的输入时被卡住了,我不知道如何打破它。

共有2个答案

邢皓
2023-03-14

//您可以尝试验证int,因为它是用for循环输入的??导入java.util.Scanner;

公共类主{

public static void main(String[] args)
{
    Scanner kbd = new Scanner(System.in);
    
    int[] numbers = new int[4];
    
    
    for(int i = 0; i < numbers.length;i++)
    {
        System.out.println("Enter numbers: ");
        numbers[i] = kbd.nextInt();
        
        while(numbers[i] < 0)
        {
            System.out.println("Please enter a positive integer");
            numbers[i] = kbd.nextInt();
        }
    }
            
}

}

宗政深
2023-03-14

每次调用nextInt()时,您都会消耗一个值。在比较之前存储该值。

while (pageVar.hasNextInt()) {
    int v = pageVar.nextInt();
    if (v > 0) {
        pageRef.add(v);
    } else {
        System.out.printf("%d: is not a valid reference value.%n", v);
    }
}
 类似资料:
  • 我很难想出如何正确使用扫描仪来验证用户输入。例如,程序需要用户输入int,用户只能输入正数,如果用户输入“apple”、“delicious apple”或负数,问题将显示错误消息。我尝试了下面的代码,然后我发现了一个令人不安的问题,“那不是一个数字!”我不知道是什么引起了这些问题。。。。 我在“number=sc.nextInt()”下面加了一行代码,意外地解决了这个问题,现在我的代码变成: 这

  • 问题内容: 对于Java练习,我试图创建一个程序,该程序从键盘读取整数,直到输入负数为止。 并打印整数的最大值和最小值,而忽略负数。 一旦运行,是否可以在同一程序中进行连续输入?我必须每次都继续运行该程序以输入数字。 任何帮助,将不胜感激 这是我的代码的一部分-它可以工作,但是我认为有一种更简单的方法可以执行我想要的操作,但不确定如何操作! 问题答案:

  • 对于java实践,我正在尝试创建一个程序,从键盘读取整数,直到输入负数。 它打印整数的最大值和最小值,忽略负数。 是否有一种方法可以在同一个程序运行后继续输入?每次输入一个数字,我都要继续运行程序。 任何帮助将不胜感激 这是我的代码的一部分-它可以工作,但我认为有一种更简单的方法可以做我想做的事情,但不确定如何做!

  • 问题内容: 我正在尝试让扫描仪在循环中进行输入。一旦用户想要完成操作,他就可以退出此循环。我尝试了许多不同的方法来执行此操作,但始终存在一些问题。这是代码: 上面代码的问题(在我尝试的其他方法上也会发生)是,当用户键入 Y时 ,将跳过名字的第一个输入,并跳转到姓氏。如果用户键入 N, 则循环将正确停止。有人可以解释发生这种情况的原因,以及如何克服使用课堂的问题? ps:执行类似的操作,将导致循环终

  • 我正在尝试通过单行输入检索用户输入:例如,使用扫描仪分隔符为Comma5,6,4,8,9。如何使用这种类型的输入检索任意数量的整数?也就是说,不必询问用户希望输入多少个整数。下面是我一直在使用的代码,但是当我想中断时,不能中断while循环。请注意,我保留System.Out以跟踪程序当前运行的位置。令人困惑的是,我可以以这种格式获得用户输入,但程序停止并再次要求用户输入,然后如果输入是一个整数,

  • 对于作业,我必须编写以下代码: 当我尝试编译它时,它在命令提示符下给了我3个错误,说“无法解析符号,符号:类扫描仪,位置:类单词,扫描仪用户输入=新扫描仪(System.in)”。我不确定错误在哪里。我应该使用BufferedReader作为输入吗?