CodeAcademy Java工作区用户输入报错NoSuchElementException求助
排查Java Scanner的NoSuchElementException异常
报错信息
Output: Enter your user name Exception in thread "main" java.util.NoSuchElementException: No line found at java.base/java.util.Scanner.nextLine(Scanner.java:1554) at Main.main(Main.java:9)
你的代码
import java.util.Scanner; class Main { public static void main(String[] args) { Scanner myObj = new Scanner(System.in); System.out.println("Enter your user name"); String userName = myObj.nextLine(); System.out.println("The username is: " + userName); } }
问题原因及解决办法
- 在线环境输入机制限制:CodeAcademy的Java工作区和本地IDE逻辑不同,需要你在运行代码前,在平台提供的专门输入框里填写要输入的内容,而非等程序输出提示后再输入。运行前先在输入区域填入用户名,再执行代码即可。
- 替换nextLine()为next():如果你的用户名不包含空格,可以把
myObj.nextLine()改成myObj.next()。部分在线环境对nextLine()的换行符处理存在兼容性问题,next()会读取到第一个分隔符(默认是空格)前的内容,能规避这类异常。 - 避免提前关闭Scanner:如果后续扩展代码,不要在读取输入前关闭与
System.in关联的Scanner,否则输入流会被关闭,再次读取时会抛出该异常。
内容的提问来源于stack exchange,提问作者gracie
相关产品推荐
相关产品推荐

