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 值)存储在数组中,以便稍后调用它们。

4

3 回答 3

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);
}
于 2013-05-15T21:16:32.953 回答
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");
}
于 2013-05-15T21:10:04.547 回答
1

您可以将它们放入 arraylist 并定义自己的 Comparator 对它们进行排序。例如。

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);
   }
}

但是您可以根据需要对其进行排序。如果您想考虑当前值 o1,请确保它返回 -1,小于 o2,如果它们被视为相等则返回 0,或者如果根据您的 if 语句条件大于则返回 1。

于 2013-05-15T21:35:07.300 回答