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

在while循环中为多个条件重用扫描器输入

司空皓
2023-03-14

我想在while循环中使用单个扫描仪输入作为多个条件,其中可以检查输入是否正确,如果不正确,则重新输入输入值。

while(scannerInput is a int AND scannerInput is > than 0 AND scannerInput is < 10)
{
    //CODE
}
while (scaner.hasNextInt() && scaner.nextInt() > 0 && scaner.nextInt() < 10)  {

}

是否有一种方法来存储第一个输入并一次又一次地重用它,或者是否有一个更好的解决方案来解决我的问题?

共有1个答案

姜献
2023-03-14

调用scanner.nextint()会使扫描器读取其输入的位置提前,因此第二次读取可能会产生不同的数字,或者在只有一个int可用时引发异常。为了解决这种情况,您可以引入一个变量来保存第二次检查的值:

int tmp;
while (scaner.hasNextInt() && (tmp = scaner.nextInt()) > 0 && tmp < 10)  {
    ...
}

第二个子表达式(tmp=scaner.nextint())扫描程序读取下一个整数值,并将其存储在临时变量tmp中。之后,将该值与零进行比较,最后将相同的值与10进行比较。

赋值是在检查TMP<10之前执行的,因为&&表达式的部分是按从左到右的顺序处理的。

while (scaner.hasNextInt()) {
    int val = scaner.nextInt();
    if (val < 0 || val >= 10) {
        break;
    }
    ...
}

我的想法是不断提示您输入新的输入直到正确为止的代码

实现这一点的常见方法是使用do/while循环:

int val = -1;
do {
    System.out.print("Enter an int: ");
    if (scanner.hasNextInt()) {
        val = scanner.nextInt();
    } else {
        scanner.nextLine();
    }
} while (val < 0 || val >= 10);
 类似资料:
  • 我需要创建一个简单的游戏,其中创建了一个随机数,用户必须猜测数字输入到扫描仪。如果他们的猜测太高,系统会告诉他们猜测得更低,如果猜测得太低也是一样。 我正在使用while循环,但我不知道如何连续调用扫描器,以便用户可以不断猜测。以下是我到目前为止的代码:

  • 我开发了一个字符排序器,我想每次字符串排序后提示用户输入一个新的字符串。我遇到的问题是扫描仪一直在扫描用户的第一个输入。如果我使用scanner.next(),它不会计算输入末尾的空白,这不是解决方案。 这是while循环的开始。一旦代码完成,它将再次从“inputtext”开始。

  • 问题内容: 我试图通过一次添加一天来遍历while循环,但它甚至第一次都不会访问while循环。while循环中的条件正确吗?当我测试它时,它仅在一种情况下起作用,但在我添加第二种条件时停止了。 问题答案: 它应该是

  • 我需要在while循环之前输入一个用户,这样它就会知道程序是否想继续。问题是while条件的更内部看不到扫描仪之前输入的一行。有什么建议吗?

  • 问题内容: 我必须在 while 循环中显示Scanner输入:用户必须插入输入,直到他写下“ quit”为止。因此,我必须验证每个输入以检查他是否写出“ quit”。我怎样才能做到这一点? 这行不通。如何验证每个用户的输入? 问题答案: 问题是nextLine() “使该扫描程序前进到当前行之外”。因此,当您调用该条件并且不保存返回值时,您将丢失用户输入的那一行。对第3行的调用返回另一行。 您可