[英]Reusing scanner input for multiple conditions in while loop
我想将单个扫描器输入用作while循环中的多个条件,在where循环中可以检查输入是否正确以及是否不正确以重新输入输入值。
像这样:
while(scannerInput is a int AND scannerInput is > than 0 AND scannerInput is < 10)
{
//CODE
}
但是,如果我使用scanner.hasNextInt()和scanner.nextInt(),它将提示我输入而不是使用相同的输入
while (scaner.hasNextInt() && scaner.nextInt() > 0 && scaner.nextInt() < 10) {
}
有没有办法存储第一个输入并一次又一次地重复使用它,或者有更好的解决方案来解决我的问题?
调用scanner.nextInt()
提高扫描器读取其输入的位置,因此第二次读取可能会产生不同的数字,或者在只有一个int
可用时抛出异常。 要解决这种情况,您可以引入一个变量来保存第二次检查的值:
int tmp;
while (scaner.hasNextInt() && (tmp = scaner.nextInt()) > 0 && tmp < 10) {
...
}
第二(tmp = scaner.nextInt())
表达式(tmp = scaner.nextInt())
从scanner
读取下一个整数值,并将其存储在临时变量tmp
。 之后,将该值与零进行比较,最后将相同的值与10进行比较。
因为对&&
表达式的部分是按从左到右的顺序处理的,所以在检查tmp < 10
之前执行分配。
该解决方案不是理想的,因为tmp
在循环后仍然可见,并且因为它不太容易阅读。 您最好在循环内移动支票,如下所示:
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);
试试这个代码:
int s;
while (scanner.hasNext() && (s = scanner.nextInt()) >0 && s <0){
#code
}
您在这里有一些选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.