首页 > 解决方案 > 使用扫描仪从 txt 文件中读取字符并添加到二维数组

问题描述

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

我正在使用双循环来读取文件并将其写入二维数组。

该文件如下所示:

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 时的工作方式相同。

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

我是否试图读取字符串而不是字符?我会假设一个字符会被java扫描仪类读取为一个字符。

标签: javamultidimensional-arrayjava.util.scanner

解决方案


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


推荐阅读