所以我正在读取一个输入文本文件,该文件由 4 行单空格分隔的数字组成。文本文件只是:
5
9 6
4 6 8
0 7 1 5
我想将这些数字输入到一个名为行的二维数组中。因此,例如,rows[1][0]
应该是 9
,即第二行中的第一个数字。
我的问题是,当我对 in.next()
或 in.nextInt()
使用扫描器时,它会忽略行尾并继续进行,所以 rows[0][1]
最终是 9
而不是 0
。如果该插槽没有编号,我希望数组用 0
完成填充。因此,由于第一行只有 1
数字,5
,我希望数组 rows[0][0]
为 5
,但 rows[0][1]
到 rows[0][3]
为 0
。
我已经尝试对 NoSuchElementException
和 if in.hasNextLine()
使用 try/catch,但这些似乎都不起作用。
任何想法或帮助将不胜感激。
最佳答案
您可以使用扫描仪读取单个标记,也可以使用扫描仪读取整行,但您不能使用扫描仪同时执行这两项操作。
您要做的是首先将行读入字符串,然后对该字符串使用扫描器来解析该行,例如:
BufferedReader lineReader = new BufferedReader(...);
String line;
while ((line = lineReader.readLine()) != null) {
Scanner scanner = new Scanner(line);
// use scanner here
}
您也可以使用 Scanner 代替 BufferedReader 来读取行,但除非您有特定要求(例如,您试图将其放入已经使用 Scanner 的代码中),否则您如何处理并不重要阅读这些行。
希望对您有所帮助。
关于java - 如何使用扫描仪从文本文件中检测行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18068756/