2017-04-22 58 views
2

我想排序我的数组,但出于某种原因,它打印出第二次 - 排序结果之前?排序后排列两次阵列

  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

提示下一次:您的输出也是** text **。创建显示它的屏幕截图没有任何意义。只需使用该文本进行复制/粘贴即可。我自由地编辑你的问题,以显示你的问题 – GhostCat

回答

3

简单:

你是不是直接打印阵列。您不断添加打算打印到该字符串变量输出的内容以收集行。

而你忘了重置那个变量。换句话说:你把数据压入输出,打印输出,你多行输出;并再次打印。

一个更好的方式做你想要什么:

  • 每个循环
  • 在循环过程之前创建一个StringBuilder builder = new StringBuilder()builder.append(whatever)
  • 在循环后,做System.out.println(builder.toString())

在这种情况下,关于字符串连接的效率更高,它会“收集”出每每个循环放

+1

引导的荣誉,而不仅仅是放弃代码! – codePG

+0

非常欢迎。 – GhostCat

+0

thats riiiiggght !!!我完全忘记了字符串变量在打印后不会自行重置。谢谢 :) –