首页 > 解决方案 > 在java中将文本文件复制到二维字符数组中

问题描述

我正在阅读一个包含 5x6 字符大 ascii 图像的文本文件。这是我到目前为止所做的:

  ...    
  Scanner fileReader = null;
  try{
     File file = new File(fileName);
     fileReader = new Scanner(file);
     int offset = 0;

     char [][] pic = new char[5][6];

     while (fileReader.hasNextLine()){
        for (int u = 0; u < row; u++){
           for (int i = 0; i < col; i++){
              String line = fileReader.nextLine();
              pic[u][i] = line.charAt(offset++);
           }
        }
        return pic;
     }
     fileReader.close();
  }
  catch(Exception e){
     System.out.println(e.getMessage());
  }...

这给了我一个“找不到线路”的消息。我想知道我用来询问用户文件名的扫描仪是否是问题的一部分。看起来是这样的:

  System.out.println("Hello! I load files.");
  System.out.println("Please, enter file name:");
  Scanner reader = new Scanner(System.in);
  String fileName = reader.nextLine();

之后我试图关闭阅读器,但它没有改变任何东西。任何帮助深表感谢。

标签: java

解决方案


几件事:

首先,您尝试为数组的每个索引读取一行(即row*col时间)。

其次,您应该只逐行阅读。

你可以用这个替换你的整个while循环:

    for (int u = 0; u < row && fileReader.hasNextLine(); u++) {

        String line = fileReader.nextLine();

        for (int i = 0; i < col; i++) {

            pic[u][i] = line.charAt(offset++);
        }

        offset = 0;
    }
    return pic;

此外,您可能希望offset在每个处理过的“行”之后重置 的值。


推荐阅读