如何不使用try-catch解决Scanner类的SIGHUP与NoSuchElementException问题
问题解决:避免Scanner的NoSuchElementException(无需try-catch)
问题原因
当Scanner.next()尝试读取输入但无可用输入时,会抛出NoSuchElementException。在线IDE中如果未提供输入、输入提前结束,或者环境的输入流被中断(关联Hangup错误),都会触发这个异常。
解决方案
在调用next()前,先用*hasNext()*判断是否还有输入可读,就能从根源避免异常:
import java.util.*; class GFG { public static void main (String[] args) { Scanner sc = new Scanner(System.in); if(sc.hasNext()) { String name = sc.next(); System.out.println("读取到输入:" + name); } System.out.println("No more input to read"); } }
说明
- *
hasNext()*会检查输入流中是否存在下一个可读取元素,返回布尔值且不会抛出异常 - 即使在线IDE未提供输入,代码也能正常执行到后续输出,既不会触发
NoSuchElementException,也能缓解Hangup相关的环境问题
内容的提问来源于stack exchange,提问作者Swati
相关产品推荐
相关产品推荐

