繁体   English   中英

导入文本文件时出现Java错误“需要数组,但找到了字符串”

[英]Java error “Array required, but String found” while importing text file

我试图将制表符分隔的文本文件导入2D数组,但是当尝试将拆分后的String的值分配给数组时,出现错误“需要数组,但找到了String”。

到目前为止,这是我的代码:

try {
            FileReader fr = new FileReader ("Laberinto.txt");
            BufferedReader br = new BufferedReader(fr);

            String s,str;
            String[] buffer;

            int y=0;

            while ((s=br.readLine())!= null){
                StringBuilder builder = new StringBuilder();
                str=builder.append(s).toString();
                buffer=str.split("\t");

                for (int x=0;x<str.length();x++){
                    this.lab[x][y]=Integer.parseInt(str[x]);
                }

                y++;
            }
}

我在this.lab[x][y]=Integer.parseInt(str[x]);上看到错误this.lab[x][y]=Integer.parseInt(str[x]);

另外,我不知道这是否有帮助,但是文件基本上是一堆1和0,它们形成了一个由制表符分隔的迷宫(1是墙壁,0是走廊)。

有人可以告诉我我做错了什么吗?

提前致谢!

parseInt(str[x])

您不能使用数组下标: []来索引成String ,而str显然是String
对于解决方案,您可能要考虑使用charAt()然后使用String.valueOf(char) ,这将在需要时将char转换回去。

str是一个字符串-从你的输入线......这不是你想要的。

您需要解析buffer

for (int x=0;x<buffer.length();x++){
     this.lab[x][y]=Integer.parseInt(buffer[x]);
}

您声明了str,如下所示:

  String s,str;

并尝试如下使用它:

  this.lab[x][y]=Integer.parseInt(str[x]);

声明将其声明为String 用法(请参阅= !!的RHS)尝试将其用作String数组。


其实,我觉得你真正的错误是,你正试图解析错误的事情。 我认为应该是这样的:

  buffer=str.split("\t");
  for (int x=0;x<buffer.length;x++){
      this.lab[x][y]=Integer.parseInt(buffer[x]);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM