java - 如何从输入文件获取二维数组看起来像字段

标签 java file-io

我想从输入读取一个文件,该文件如下所示:

..........
..........
..........
..........

我想要这个输入文件,读取并放入二维数组中。

我已经尝试过这个:

  public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    System.out.println("Give the input filename");
    String fileName=scanner.nextLine();
    readFieldFile(fileName);

    scanner.close();
  }
  static Cell[][] readFieldFile(String fileName) throws IOException {
    BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(fileName)));
    char[][] field=new char[4][10];
    String currentLine;
    for(int i=0;i<4;i++) {
      while((currentLine=reader.readLine())!=null) {
        field[i]=currentLine.toCharArray();
      }
    }
    return field;
  }

它给出了一个错误,但我认为这是因为我使用了Cell[][]。我需要它返回这个 Cell[][],这样我就可以在其他函数中使用它。有人知道如何获得正确的返回吗?该字段是固定的:行 4 列,列 10。

最佳答案

您计算field,一个char[][],但声明您返回一个Cell[][]。创建适当大小的 Cell[][],并根据需要设置值。然后,您的错误就会消失:

static Cell[][] readFieldFile(String fileName) throws IOException
{
    ... //whatever previous logic
    // don't return, though. Instead, do the following:
    Cell[][] cells = new Cell[4][10];
    for(int i = 0; i < 4; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            cells[i][j] = new Cell(field[i][j]); // or however you initialize Cell
        }
    }
    return cells;
}

或者,您可以通过更改方法声明将返回类型转换为 char[][]:

static char[][] readFieldFile(String fileName) throws IOException
{
    ... // whatever was there already
}

附:请阅读this下次。标题很好,但问的是“有人能帮助我吗?”问题中的任何一点通常都不精确,足以让您重定向到此链接。

关于java - 如何从输入文件获取二维数组看起来像字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58327570/

相关文章:

javascript - 如何在不向服务器发送数据的情况下显示选定的图像?

c++ - 有没有更好的方法来处理缓冲区和读取中的不完整数据?

java - 拥有大量小方法是否有助于 JIT 编译器优化?

java - RxJava 中的超时

java - 程序不返回

java - 将文件读入对象数组

Android Things 文件系统

python seek() 和 read() 以不同方式计算文件位置

java - SOAP : NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces

java - 是否可以通过 API 将一个复杂对象的 JSON 数据解析为自定义对象