如何从文本文件中使用Scanner检测行尾

TrM*_*ako 1 java arrays file input line

所以我正在读取一个输入文本文件,该文件是4行单空格分隔数字.文本文件只是:

5 
9 6
4 6 8
0 7 1 5
Run Code Online (Sandbox Code Playgroud)

我想将这些数字输入到一个名为rows的2D数组中.例如,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.

我尝试过使用try/catch NoSuchElementException和if,in.hasNextLine()但这些似乎都不起作用.

任何想法或帮助将不胜感激.

Jas*_*n C 5

您可以使用扫描仪读取单个令牌,也可以使用扫描仪读取整行,但不能使用扫描仪同时执行这两种操作.

你想要做的是首先将该行读入String,然后使用该String上的Scanner来解析该行,例如:

BufferedReader lineReader = new BufferedReader(...);
String line;

while ((line = lineReader.readLine()) != null) {
    Scanner scanner = new Scanner(line); 
    // use scanner here
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用扫描仪读取行而不是BufferedReader,但除非您有特定要求(例如,您试图将其放入已使用扫描仪的代码中),否则读取行的方式并不重要.

希望有所帮助.