quando a matriz é impressa fora, apenas meu último elemento é impresso. Eu tenho lutado com isso desde há muito tempo, por favor me ajude eu sou muito fraco em 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));
Respostas:
1 para resposta № 1Veja se isso não faz o que você deseja
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
terá o mesmo comprimento que arr
porque cada Rectangle
tem uma área Eu salvei a classificação até ficar fora do loop, pois não está servindo para você de boa qualidade a cada iteração, se você não estiver fazendo nada com ela. Classifique-o uma vez antes de imprimi-lo.
A propósito, a1
e arr
são nomes horríveis. areas
e rectangles
seria muito melhor.
ATUALIZAR:
Uma das falhas críticas do código original era esta linha:
a1=new int[]{ current.area() };
Essa linha estava em loop recebendo um novo current
cada vez, obtendo a área e empacotando-a em uma matriz de um elemento. Mas cada referência de um elemento-matriz-de-área foi armazenada no mesmo local, a1
. Cada vez que o ciclo voltava, o antigo era pisoteado pelo novo. A classificação de cada matriz de um elemento não fez nada para corrigir isso.