/ / por que não consigo acessar a matriz fora desse loop - java, matrizes

por que não posso acessar matriz fora deste loop - java, matrizes

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 № 1

Veja 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.