2013-05-15 86 views
0

我在這裏有一個程序,允許用戶輸入一個數字(n)和程序輸出的n個隨機數。我需要創建一個循環,將這些隨機值從最小值組織到最大值,但我不確定如何去做這些,有什麼想法?謝謝,如何按順序組織隨機值?

// takes inputted value to "randomize" numbers too 
int amtOfNumbers = Integer.parseInt(amtOfNumbersField.getText()); 
int[] random = new int[amtOfNumbers-1]; // 1 prevents array from including 0 
Random r = new Random(); //for random values 

// Insert random numbers into the array 
for (int i = 0; i < random.length; i++) { 
    random[i] = r.nextInt(100) + 1; 
} 

// Output random numbers 
for (int i = 0; i < random.length; i++) { 
    itsATextArea.append(random[i] + "\n"); 
} 

我將信息(隨機n值)存儲在數組中,以便稍後可以調用它們。

+8

您有很多選擇:https://en.wikipedia.org/wiki/Sorting_algorithm。或者使用內置的java排序功能。 –

+1

我認爲java有這個'Arrays.Sort()'的東西。如果你需要組織數組,我認爲這種方法可能很有用 –

+2

你的意思是像'Arrays.sort(random);'? –

回答

2

Java已經內置排序能力:

// Insert random numbers into the array 
for (int i = 0; i < random.length; i++) { 
    random[i] = r.nextInt(100) + 1; 
} 

Arrays.sort(random); 

// Output random numbers 
for (int i = 0; i < random.length; i++) { 
    itsATextArea.append(random[i] + "\n"); 
} 
+0

有沒有辦法讓它下降?那麼從最高價到最低價? – user2383438

+0

@ user2383438看看我的答案。它支持這兩個命令。 –

3

使用數據結構像TreeSet自動保護您的數據的排序順序。

int amtOfNumbers = Integer.parseInt("10"); 

TreeSet<Integer> randomSet = new TreeSet<Integer>(); 
Random r = new Random(); //for random values 

// Insert random numbers into the set 
for (int i = 0; i < amtOfNumbers; i++) { 
    randomSet.add(r.nextInt(100) + 1); 
} 

// Output in Ascending order 
for (Integer i: randomSet) { 
    System.out.println(i); 
} 

要輸出的數字降序

// Descending order 
for (Integer i: randomSet.descendingSet()) { 
    System.out.println(i); 
} 
+0

如果不允許重複,這將工作。否則,TreeMap可以與數字一起使用,作爲鍵值的實例計數。 – BevynQ

+0

@BevynQ你確實有一點,但在隨機數的情況下,通常不希望生成的輸出重複。 (雖然這是需要主觀的)。 –

1

你可以把它們放到一個ArrayList和定義自己的比較對它們進行排序。例如。

int amtOfNumbers = Integer.parseInt("10"); 

ArrayList<Integer> randomList= new ArrayList<Integer>(); 
Random r = new Random(); //for random values 

// Insert random numbers into the set 
for (int i = 0; i < amtOfNumbers; i++) { 
    randomList.add(r.nextInt(100) + 1); 
} 

//Now sort it however way you want 
Collections.sort(randomList, new MyCustomComparator()); 

所有你需要的是定義一個新的比較

public class MyCustomComparator implements Comparator<Integer>(){ 

    public int compare(Integer o1, Integer o2){ 
     //say I want descending order 
     return -1* o1.compare(o2); 
    } 
} 

,但你可以對它進行排序不過你想要的。只要確保它返回-1,如果你想考慮當前值o1,小於o2,如果它們被認爲是相等返回0,或者如果大於1,則根據你的if語句條件返回1。

+0

你是下一個Alan Turing 75inchpianist! – 2to1mux