由于错误的数据类型,Java for循环和编译错误

时间:2014-11-26 10:29:19

标签: java arrays list compiler-errors iterator

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

List<String[]> list;
....
for (String[] tmp : list.get(0)) {
...
}

此代码段无法编译,因为list.get(0)正在返回String而不是String的数组。但为什么呢?

5 个答案:

答案 0 :(得分:3)

list.get(0)返回一个String的数组,所以当你迭代它时,你会得到单独的字符串:

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

如果遍历整个列表,则每次迭代都会得到一个String数组:

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

答案 1 :(得分:1)

尝试迭代字符串数组

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

或迭代第一个数组的字符串

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

答案 2 :(得分:0)

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

应该是

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

因为list.get(0)是一个字符串数组,而不是字符串数组的数组。

答案 3 :(得分:0)

实际上,list.get(0)并未按预期返回String而是String[]List<String[]> listList String[]。因此,list.get(0)String[]。问题出在你的循环变量上。如果循环遍历String[],循环变量在循环期间保存单个元素的类型只是String

应该是:

List<String[]> list;
// ...
for (String el : list.get(0)) {
    // ...
}

答案 4 :(得分:0)

当你调用list.get(0)时,它返回一个String数组。如果我扩展你的代码,它就像下面一样,

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

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

显然哪个错误,因为strArr中的每个对象都是String,而不是String数组。