Scanner.next() 可以返回 null 或空字符串吗?

Zor*_*one 1 java input

我正在学习来自其他编程语言(Js、C 和其他..)的 Java

我想知道在任何情况下该Scanner.next()方法是否可以返回(不抛出)无效字符串或少于一个字符(即null或空字符串"")。我习惯于仔细检查用户输入是否有任何可能的意外/无效值,但我想知道测试nullmyString.length() < 1是否总是不必要的或可能有用/需要。

我特别在从命令行和 读取时询问,而System.in不是从其他文件流读取。myString.charAt(0)从终端输入正常读取时,我是否可以安全地从返回值中获取第一个字符(即,没有管道和文件,直接从终端和键盘读取)?

我搜索了 Java SE 9 API Docs,但找不到关于可能意外返回值的提及。如果输入出现任何问题,它应该只是抛出一个异常,对吗?

示例(没有导入的主要方法的一部分):

Scanner keyboard = new Scanner(System.in);

System.out.print("Enter a selection (from A to E): ");
String res = keyboard.next();

if (res == null || res.length() < 1) {
    // Unnecessary if?
}
Run Code Online (Sandbox Code Playgroud)

Ous*_* D. 5

Scanner#next可以从未返回null,如果用户输入一个空字符串或包含空格才把方法将阻塞并等待输入以扫描一个字符串。

因此,if条件是多余的,根本不需要。