Java 导入文本文件时出错 "Array required, but String found"
Java error "Array required, but String found" while importing text file
我正在尝试将制表符分隔的文本文件导入二维数组,但在尝试将拆分字符串的值分配给数组时出现错误 "Array required, but String found"。
到目前为止,这是我的代码:
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]);
行收到错误
此外,我不知道这是否有帮助,但该文件基本上是一堆 1 和 0,它们形成一个由制表符分隔的迷宫(1 是墙壁,0 是走廊)。
有人能告诉我我做错了什么吗?
在此先致谢!
parseInt(str[x])
您不能使用数组下标:[]
,索引到 String
,显然 str
是 String
.
对于您可能要考虑使用 charAt()
and then 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]);
}
我正在尝试将制表符分隔的文本文件导入二维数组,但在尝试将拆分字符串的值分配给数组时出现错误 "Array required, but String found"。
到目前为止,这是我的代码:
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]);
此外,我不知道这是否有帮助,但该文件基本上是一堆 1 和 0,它们形成一个由制表符分隔的迷宫(1 是墙壁,0 是走廊)。
有人能告诉我我做错了什么吗?
在此先致谢!
parseInt(str[x])
您不能使用数组下标:[]
,索引到 String
,显然 str
是 String
.
对于您可能要考虑使用 charAt()
and then 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]);
}