一、问题描述
最近在刷题的过程中,发现许多题都是要求以不再输入数据作为结束输入的标志。
比如有一题的输入要求如下:
输入可能有多组数据。每组数据都包括多行,第一行先输入个数 N,接下来的 N 行再输入相应个数的整数。当不再输入数据时结束输入。
输入示例:
2
1
2
3
10
4
5
对于上面的输入,实际是两组数据,每一组的首个数字代表本组的数据个数。第一组的数据为[1, 2],第二组数据为 [10, 4, 5]。
二、解决方案
在 Java 中,我们一般都是以特定字符串来结束输入,比如 “exit”、“q” 等。而此类题目要求当不再输入数据时结束输入,也就是说以换行(或理解为空字符)结束输入。
我们知道,常用的输入方法有:next()、nextLine() 。它们的使用说明如下:
next() 方法来实现输入,其在读取内容时,会过滤掉有效字符前面的无效字符,对输入有效字符之前遇到的空格键、Tab键或 Enter 键等结束符,next() 方法会自动将其过滤掉。
nextLine() 方法字面上有扫描一整行的意思,它的结束符只能是 Enter 键,即 nextLine() 方法返回的是 Enter 键之前没有被读取的所有字符,它是可以得到带空格的字符串的。
从上面的描述我们可以看出来,理论上是可以通过 nextLine() 来实现换行结束输入的。
于是一开始我是这么写的:
public static void main(Stri