2017-04-18 115 views
1

我正在嘗試生成正數並將它們按升序排序,而不使用arrays.sort僅生成正的隨機數並對它們進行排序

此代碼詢問多少個隨機數,然後對它們進行分類並打印出來。我的代碼問多少,並打印出比給定的少一個。

例如,當我要求2時,它只打印出一個。無法找到錯誤或錯誤。

代碼

import java.util.*; 

public class Sort { 

    public static void main(String args[]) { 
     Scanner in = new Scanner(System.in); 
     System.out.print("How many numbers do you want? "); 
     int howMany = in.nextInt(); 
     int[] myArray = getRandomArray(howMany); 

    } 

    /* public static int bsearch(int[] arr, int key) 
      { 

      }*/ 
    public static int[] getRandomArray(int howMany) { 
     int[] returnMe = new int[howMany]; // Assume size >= 0 
     Random rand = new Random(); 
     for (int i = 0; i < howMany; i++) { 
      returnMe[i] = rand.nextInt(Integer.MAX_VALUE) + 1; 
      System.out.print(returnMe[i] + " "); 
      for (i = 1; i <= returnMe.length; i++) { 
       for (int j = i + 1; j < returnMe.length; j++) { 
        int tmp = 0; 
        if (returnMe[i] > returnMe[j]) { 
         tmp = returnMe[i]; 
         returnMe[i] = returnMe[j]; 
         returnMe[j] = tmp; 
        } 
       } 
      } 
     } 
     return returnMe; 
    } 
} 

回答

1

因爲你改變你的循環的i

for (int i = 0; i < howMany; i++) {//loop 1 
    ... 
    for (i = 1; i <= returnMe.length; i++) {//loop 2 
    //--------------------------------^^^ 
    //When you get out from this loop, the i is > then the original i 

爲了避免此問題,使用另一個變量,例如你的代碼應該是這樣的:

for (int i = 0; i < howMany; i++) {//loop 1 
    ... 
    for (int k = 1; k <= returnMe.length; k++) {//loop 2 
    //-------^------^---------------------^ 

和該程序將生成你想要的。

+0

我試過'(我= 0;我 karthika

+0

沒有@karthika不使用這個,而是使用另一個變量,檢查我編輯我已經發布所有的解決方案 –

+0

噢好吧,但現在它不排序先生@YCD_L – karthika

相關問題