我正在尝试对数组进行排序,但出于某种原因,它会在排序结果之前再次打印出来?
int []arrayLoterry= new int[50];
String output="";
for(int i=0;i<arrayLoterry.length;i++){
arrayLoterry[i]=(int) Math.floor(Math.random()*49)+i;
output+=arrayLoterry[i]+" ";
if(i%10==9){
output+="\n";
}
}
System.out.println(output);
/************WHERE IT STARTS SORTING****************************/
int temp;
for(int i=0;i<arrayLoterry.length;i++){
for(int j=i+1;j<arrayLoterry.length;j++){
if(arrayLoterry[i]>arrayLoterry[j]){
temp= arrayLoterry[j];
arrayLoterry[j]=arrayLoterry[i];
arrayLoterry[i]=temp;
}
}
}
System.out.println();
for(int j=0;j<arrayLoterry.length;j++){
output+=arrayLoterry[j]+" ";
if(j%10==9){
output+="\n";
}
}
System.out.println(output);
这给出了什么(由编辑简化):
5 3 2 1
7 9 4 0
5 3 2 1
7 9 4 0
0 1 2 3
4 5 7 9
为什么在我进行排序后再打印出来?
答案 0 :(得分:3)
简单:
您不是直接打印阵列。您继续将要打印的内容添加到该字符串变量输出中以收集行。
您忘了重置该变量。换句话说:您将数据推送到输出,打印输出,添加更多行到输出;并再次打印。
更好的方法来做你想做的事:
StringBuilder builder = new StringBuilder()
builder.append(whatever)
System.out.println(builder.toString())
在这种情况下,对于字符串的连接更有效,并且它将每次循环“收集”输出一次。