Scanner类nextLine方法无法读取输入行,代码无输出原因咨询
代码无输出的原因分析
你的代码出现无输出(或看似无输出)的核心原因是Scanner类的输入读取机制问题:
scanner.nextInt()只会读取输入中的整数数值,不会处理整数输入结束后的换行符(也就是你输入整数后按回车产生的\n)。- 后续调用的
scanner.nextLine()会直接读取缓冲区中剩下的这个空换行符,最终得到一个空字符串。 System.out.println(scanner.nextLine())打印空字符串时,只会输出一个空白行,这个空白行在控制台中很容易被忽略,让你误以为程序没有任何输出。
修正方案
如果后续需要读取用户输入的字符串,可以在nextInt()之后额外调用一次scanner.nextLine()来消耗掉残留的换行符:
import java.io.IOException; import java.util.Scanner; public class MainTraining { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); int countOfStrangers = scanner.nextInt(); scanner.nextLine(); // 消耗掉整数后的换行符 String[] name = new String[countOfStrangers]; System.out.println(scanner.nextLine()); } }
或者换一种方式,先读取整行再转换为整数,避免换行符残留问题:
import java.io.IOException; import java.util.Scanner; public class MainTraining { public static void main(String[] args) throws IOException { Scanner scanner = new Scanner(System.in); int countOfStrangers = Integer.parseInt(scanner.nextLine()); String[] name = new String[countOfStrangers]; System.out.println(scanner.nextLine()); } }
内容的提问来源于stack exchange,提问作者dadadaniil
相关产品推荐
相关产品推荐

