java - 在java中将文本文件复制到二维字符数组中

标签 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();

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

最佳答案

几件事:

首先,您尝试为数组的每个索引读取一行(即 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 的值。

关于java - 在java中将文本文件复制到二维字符数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251689/

相关文章:

java - org.springframework.http.converter.HttpMessageNotWritableException 找不到类型为 : class 的返回值的转换器

java - 如何验证内容更改的集合的方法调用?

java - 这里Spring boot内部是如何处理http请求的呢?

java - 添加并命名书签 jprofiler

java - 如何根据 Predicate 过滤 Iterable?

java - 如何使用 Java 查询 Odata 提要

java - 如何为数组中的每个对象创建一个数组?

java - 使用 Xstream,需要说明

java - 在这个程序(Java)中,我试图制作一个掷骰子。我怎样才能让它滚动很多次并添加面包卷?

java - 更改文本大小以及菜单中单个项目的位置