Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尽管使用了hasNext,但无任何TouchElementException_Java_Java.util.scanner - Fatal编程技术网

Java 尽管使用了hasNext,但无任何TouchElementException

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(),而

尽管使用hasNext进行了检查,我还是不断收到NoTouchElementException。基本上,我只想读取传递到扫描器中的整数。我的循环在下一个可读对象不是整数时运行。如果为,则返回整数

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

我运行了你的代码,但似乎没问题。@Alif Hasnian怪异。感谢您的快速响应,尽管抱歉,您所说的回退是什么意思?在返回之前,您可能需要在
if
中检查
if(scan.hasnetint())
。使用回退,我指的是在扫描仪完全没有数字输入的情况下返回的值。无需检查
scan.hasnetint())
就好像while循环将带着剩余的下一个令牌退出一样,由于while条件,它将是int-parsable。