2017-04-22 96 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 !!!我完全忘記了字符串變量在打印後不會自行重置。謝謝 :) –