当阵列打印在外面时,只有我的最后一个元素被打印出来。我一直在努力解决这个问题很长一段时间请帮助我,我在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));
答案 0 :(得分:1)
看看这不能做你想做的事情
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
都有一个区域。我将排序保存到循环之外,因为如果你不对它做任何事情,那么每次迭代都没有对你做任何好的排序。在打印之前将其排序一次。
顺便说一句,a1
和arr
是可怕的名字。 areas
和rectangles
会好得多。
更新:
原始代码的一个关键缺陷是这一行:
a1=new int[]{ current.area() };
该行每次循环获取一个新的current
,从中获取该区域,并将其打包在一个元素数组中。但每个单元素阵列区域引用都存储在同一位置a1
。每次循环再次出现时,旧的一个被新的踩到了。对每个单元素数组进行排序并没有做任何事情来解决这个问题。