java - 使用扫描仪从txt文件中读取字符并添加到二维数组中

标签 java multidimensional-array java.util.scanner

我有一个 txt 文件,我正在尝试使用扫描仪类读取该文件。

我使用双 for 循环来读取文件并将其存储为二维数组。

该文件如下所示:

3 3 。 R# 。 。 # 。 。 #

第一行分别是二维数组的长度和宽度。

我得到了这个工作,它读取一个类似的txt文件,但它不是char而是像这样的int:

3 3 1 0 1 1 1 1 0 0 1

我在这里使用的方法如下所示:

readFile(String filename){
  Scanner scan = new Scanner(new File(filename));
  // read the first two numbers in the file for the size of the array
  int numberRows = scan.nextInt();
  int numberColumns = scan.nextInt();

  char[][] grid = new char[numberRows][numberColums];
  for (int i = 0; i < numberRows; i++) {
      for (int j = 0; j < numberColumns; j++) {
           grid[i][j] = scan.next().charAt(0);
      }
   }
}

我希望这与使用 char 而不是 int 时的工作方式相同。

但是我收到错误 当出现NoSuchElementException scan.next().charAt(0) 实际上运行尝试从 txt 文件中读取字符。

我想读取字符串而不是字符吗?我假设单个字符将被 java 扫描器类读取为字符。

最佳答案

Scanner.next() 始终返回一个String。请查看https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html了解更多信息。在对 scan.next() 执行任何操作之前,例如scan.next().charAt(0),您应该检查if (scan.hasNext())条件。

关于java - 使用扫描仪从txt文件中读取字符并添加到二维数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58792226/

相关文章:

java - Android Okhttp异步调用

java - 在面向 Oreo 的 Android 应用程序上使用 Android Broadcast

Java - 使用数组作为参数从另一个类调用方法

c++ - 在运行时填充多维 vector

java - 在扫描仪验证中将 Enter 键视为无效

java - 如何将文本文件作为字符串读取并仅提取单个字符? "0"

java - 如何使用分隔符排除括号?

java - VSCode Java 调试器 "Error Unable to open ' thing.java' : File not found (\thing. java)。”

java - 如何解决重复的 zip 条目

c++ - 将(行)从二维数组复制到一维数组