gpt4 book ai didi

java - 为什么我不能访问这个循环之外的数组

转载 作者:行者123 更新时间:2023-11-30 08:17:31 24 4
gpt4 key购买 nike

当数组在外部打印时,仅打印我的最后一个元素。我很长一段时间以来一直在努力解决这个问题,请帮助我,我在java方面真的很弱

for (int i=0; i < arr.length; i++) {
Rectangle current = arr[i];
a1=new int[]{ current.area() };
System.out.println("a1 area" + Arrays.toString(a1));
System.out.println("------------------------------------");
Arrays.sort(a1);
}
System.out.println("outside" + Arrays.toString(a1));

最佳答案

看看这是否不符合您的要求

int[] a1 = new int[arr.length]; //a1 is an array of areas

for (int i=0; i < arr.length; i++) {
Rectangle current = arr[i];
a1[i] = current.area();
System.out.println("a1 area: " + a1[i]); //TODO remove debugging code
System.out.println("------------------------------------");
}
Arrays.sort(a1);

System.out.println("outside" + Arrays.toString(a1));

a1 的长度与 arr 相同,因为每个 Rectangle 都有一个区域。我将排序保存到循环之外,因为如果您不对其进行任何操作,那么对每次迭代进行排序对您没有任何好处。打印前先排序一次。

顺便说一句,a1arr 都是可怕的名字。 区域矩形会好得多。

更新:

原始代码的关键缺陷之一是这一行:

a1=new int[]{ current.area() };

该行处于循环中,每次都会获取新的current,从中获取区域,并将其打包到一个元素数组中。但每个区域单元素数组引用都存储在同一个位置,a1。每次循环再次出现时,旧的都会被新的踩到。对每个单元素数组进行排序并不能解决此问题。

关于java - 为什么我不能访问这个循环之外的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29447344/

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