我试图将制表符分隔的文本文件导入到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]);
行
此外,我不知道这是否有帮助,但文件基本上是一堆1和0,形成一个迷宫(1个是墙,0个走廊)由制表机界定。
有人可以告诉我,我做错了吗?
先谢谢!
答案 0 :(得分:2)
parseInt(str[x])
您无法使用数组下标[]
来索引String
,显然str
是String
。
对于解决方案,您可能需要考虑使用charAt()
然后使用String.valueOf(char)
,以便在需要时将char
转换回来。
答案 1 :(得分:1)
str
是一个字符串 - 来自您输入的一行......这不是您想要的。
您需要解析buffer
:
for (int x=0;x<buffer.length();x++){
this.lab[x][y]=Integer.parseInt(buffer[x]);
}
答案 2 :(得分:1)
你声明str如下:
$products = Product::with('prices')->get();
foreach ($products as $product)
{
$minPrice = $product->prices->min('price');
// Do something with $product and $minPrice
}
并试图按如下方式使用它:
min()
声明将其声明为 String s,str;
。用法(参见 this.lab[x][y]=Integer.parseInt(str[x]);
!!的RHS)尝试将其用作String
的数组。
实际上,我认为你真正的错误是你试图解析错误的东西。我认为应该是这样的:
=