如何显示一个矩阵在降序和升序的形式在JTextArea java与数组排序?



我需要按降序和升序对矩阵进行排序,但将其打印为1维数组。

目前它按升序排序,但只对最后一行进行排序,我不知道如何显示所有行,也不知道如何按降序排序。

public void mostrarMatriz (int matriz[][], int n){

DefaultTableModel model = (DefaultTableModel) tablaMatriz.getModel();
model.setRowCount(n);
model.setColumnCount(n);

for(int i = 0; i < n ; i++){
for(int j = 0; j < n; j++){
tablaMatriz.setValueAt(matriz[i][j], i, j);
} 
}
for(int[] i: matriz){   
Arrays.sort(i);
txtMenor.setText(Arrays.toString(i));
}   
}
}

在文本中只显示矩阵的最后一行的原因是因为它在每次迭代中被覆盖,例如:

// text is being set/overwritten in each iteration of this loop
for(int[] i : matriz) {
Arrays.sort(i);
txtMenor.setText(Arrays.toString(i));
}
// You can use append instead
String text = "";
for(int[] i : matriz) {
Arrays.sort(i);
text += Arrays.toString(i) + " ";
}
txtMenor.setText(text);

要按降序显示每一行,您必须在将每个数组附加到文本之前按反向顺序对其排序。你可以使用流:

// You can use append instead
String text = "";
for(int[] i : matriz) {
int[] sorted = IntStream.of(i)
.boxed()
.sorted(Comparator.reverseOrder())
.mapToInt(a -> a)
.toArray();
text += Arrays.toString(sorted) + " ";
}
txtMenor.setText(text);

循环应该附加文本,而不是在每次迭代时重置文本:

String text="";
for(int[] i: matriz)
{   
Arrays.sort(i);
text+=Arrays.toString(i)+" ";
}
if (!text.isEmpty())
txtMenor.setText(text.subString(0,text.length()-1));

相反,只是翻转后:

Collections.reverse(Arrays.asList(matriz)); 
txtX.setText(Arrays.deepToString(matriz));

最新更新