Java 尽管使用了hasNext,但无任何TouchElementException
尽管使用hasNext进行了检查,我还是不断收到NoTouchElementException。基本上,我只想读取传递到扫描器中的整数。我的循环在下一个可读对象不是整数时运行。如果为,则返回整数Java 尽管使用了hasNext,但无任何TouchElementException,java,java.util.scanner,Java,Java.util.scanner,尽管使用hasNext进行了检查,我还是不断收到NoTouchElementException。基本上,我只想读取传递到扫描器中的整数。我的循环在下一个可读对象不是整数时运行。如果为,则返回整数 int handleIntVal(扫描仪扫描){ 而(!scan.hasnetint()){ scan.next(); } 返回scan.nextInt(); } 如果没有下一个元素,scan.next()将已经抛出一个NoTouchElementException。因为您没有检查hasNext(),而
int handleIntVal(扫描仪扫描){
而(!scan.hasnetint()){
scan.next();
}
返回scan.nextInt();
}
如果没有下一个元素,scan.next()
将已经抛出一个NoTouchElementException
。因为您没有检查hasNext()
,而是检查!hasNext()
对此没有防护措施
我没有尝试,但这应该可以:
int handleIntVal(Scanner scan) {
while (scan.hasNext() && !scan.hasNextInt()) {
scan.next();
}
if (scan.hasNext()) {
return scan.nextInt();
}
return <Whatever your fallback is>;
}
int handleIntVal(扫描仪扫描){
while(scan.hasNext()&&!scan.hasNextInt()){
scan.next();
}
if(scan.hasNext()){
返回scan.nextInt();
}
返回;
}
此代码将显示什么
while (!scan.hasNextInt()) {
scan.next();
}
当你通过“a b c”时,你会做什么
它会去的
- “a”不是
,获取下一个令牌int
- “b”不是
,获取下一个令牌int
- “c”不是
,获取下一个标记int
- 没有更多令牌了,抛出一个
NoTouchElementException
if
中检查if(scan.hasnetint())
。使用回退,我指的是在扫描仪完全没有数字输入的情况下返回的值。无需检查scan.hasnetint())
就好像while循环将带着剩余的下一个令牌退出一样,由于while条件,它将是int-parsable。