gpt4 book ai didi

Java For-each 循环数据类型不匹配

转载 作者:行者123 更新时间:2023-12-01 06:26:22 24 4
gpt4 key购买 nike

我在最近的项目中将一堆普通的 for 循环转换为 for-each 循环,并遇到了一个矛盾的问题。

    imgMap = new int[rows][cols];

for (int r=0; r<imgMap.length; r++) {
rowArray = mapBR.readLine().split(",");
for (int c=0; c<imgMap[r].length; c++) {
imgMap[r][c] = Integer.parseInt(rowArray[c]);
}
}

System.out.println(imgMap.length+", "+imgMap[0].length);

// print array in rectangular form
for (int[] r : imgMap) {
for (int[] c : imgMap[r]) {
System.out.print(" " + c[0]);
}
System.out.println("");
}

imgMap 是一个二维 int 数组 (int[][]),用于保存“ map ”
ma​​pBR 是“ map ”取自的外部文件的 BufferedReader
第一个嵌套的 for 循环集读取文件,第二个嵌套的 for-each 集将其写入控制台以确保正确读取。

我找不到一种方法可以使第一个 for 循环集作为 for-each 循环工作,因此这是一个子问题,如果有人也能帮助我,我会很高兴。

无论如何,回到主要问题。当我(尝试)编译它时,编译器会出现一个错误,指出 int[] c : imgMap[r] 行具有不兼容的类型,但是,当我将其更改为 int c : imgMap[r]它会犯同样的错误!因为我看不出它怎么可能是其中一种类型,所以我很困惑。

我希望我已经提供了足够的信息。

IAmThePiGuy

最佳答案

在第一个循环中,您需要将 c 设为 int 以便可以访问 rowArray[c] - 但这应该可以工作:

for (int[] row : imgMap) {
String[] rowArray = mapBR.readLine().split(",");
for (int c = 0; c < row.length; c++) {
row[c] = Integer.parseInt(rowArray[c]);
}
}

在第二个循环中,您只需要迭代 r,而不是通过 imgMap[r]:

for (int[] row : imgMap) {
for (int value : row) {
System.out.print(" " + value);
}
System.out.println("");
}

基本上,您需要仔细考虑所涉及的类型 - 变量是表示数组的索引,还是数组本身。

关于Java For-each 循环数据类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4448268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com