由于数据类型错误导致Java for循环和编译错误

由于数据类型错误导致Java for循环和编译错误,java,arrays,list,compiler-errors,iterator,Java,Arrays,List,Compiler Errors,Iterator,今天我在Java中使用for循环时有一个奇怪的经历,我真的无法解释。这是我的代码片段: List<String[]> list; .... for (String[] tmp : list.get(0)) { ... } 列表; .... for(字符串[]tmp:list.get(0)){ ... } 此代码段未编译,因为list.get(0)返回的是String而不是Strings的数组。但是为什么呢 for (String[] tmp : list.get(0)) 应该是

今天我在Java中使用for循环时有一个奇怪的经历,我真的无法解释。这是我的代码片段:

List<String[]> list;
....
for (String[] tmp : list.get(0)) {
...
}
列表;
....
for(字符串[]tmp:list.get(0)){
...
}
此代码段未编译,因为
list.get(0)
返回的是
String
而不是
String
s的数组。但是为什么呢

for (String[] tmp : list.get(0))
应该是

for (String tmp : list.get(0))
因为
list.get(0)
是字符串数组,而不是字符串数组

应该是

for (String tmp : list.get(0))
由于
list.get(0)
是一个字符串数组,而不是字符串数组。

list.get(0)
返回一个
string
s数组,因此当您对其进行迭代时,会得到单个字符串:

for (String tmp : list.get(0)) {
...
}
如果对整个列表进行迭代,则每次迭代都会得到一个字符串数组:

for (String[] tmp : list) {
...
}
list.get(0)
返回一个
String
s数组,因此当您对其进行迭代时,您将得到单个字符串:

for (String tmp : list.get(0)) {
...
}
如果对整个列表进行迭代,则每次迭代都会得到一个字符串数组:

for (String[] tmp : list) {
...
}

尝试迭代字符串数组

for (String[] tmp : list) {
...
}
或者迭代第一个数组的字符串

for (String tmp : list.get(0)) {
...
}

尝试迭代字符串数组

for (String[] tmp : list) {
...
}
或者迭代第一个数组的字符串

for (String tmp : list.get(0)) {
...
}
实际上,
list.get(0)
并没有像您所期望的那样返回
字符串,而是返回
字符串[]
<代码>列表列表
字符串[]
列表
<因此,get(0)是一个
字符串[]
。问题在于循环变量。如果在
String[]
上循环,则循环期间保存单个元素的循环变量的类型就是
String

应该是:

List<String[]> list;
// ...
for (String el : list.get(0)) {
    // ...
}
列表;
// ...
for(字符串el:list.get(0)){
// ...
}
实际上,
list.get(0)
并没有像您所期望的那样返回
字符串,而是返回
字符串[]
<代码>列表列表
字符串[]
列表
<因此,get(0)是一个
字符串[]
。问题在于循环变量。如果在
String[]
上循环,则循环期间保存单个元素的循环变量的类型就是
String

应该是:

List<String[]> list;
// ...
for (String el : list.get(0)) {
    // ...
}
列表;
// ...
for(字符串el:list.get(0)){
// ...
}

当您调用list.get(0)时,它将返回一个字符串数组。如果我扩展你的代码,它会变成如下所示

String[] strArr = list.get(0);

....
for (String[] tmp : strArr) { //compilation issue
...
}

显然这是错误的,因为strArr中的每个对象都是字符串,而不是字符串数组。

调用list.get(0)时,它返回的是字符串数组。如果我扩展你的代码,它会变成如下所示

String[] strArr = list.get(0);

....
for (String[] tmp : strArr) { //compilation issue
...
}

很明显,这是错误的,因为strArr中的每个对象都是字符串,而不是字符串数组。

可以这么简单:我真的只是在推理时出错了。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢事情可能很简单:我真的只是在推理上犯了一个错误。谢谢