java - 如何使用扫描仪从文本文件中检测行尾

标签 java arrays file input line

所以我正在读取一个输入文本文件,该文件由 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/

相关文章:

java - FileReader 查找文件的根目录是什么?

java - 将 void 方法的内容保存到变量

javascript - 如何在 Javascript 中为复杂的对象数组链接映射和过滤方法?

javascript - AngularJS如何根据指定参数过滤JSON数据

c++ - 打印总数和大于数字的元素的索引

c - 逐行读取文件,分析字符 --- C

file - 如何打开最有可能是二进制的 LUA 文件?

java - 在 while 循环外初始化的变量不会被循环内的代码修改?

java - Java中线程或进程的内存使用

java - 如何在 Eclipse 中浏览 Android 类文件(附带源代码)?