随机数组排序

时间:2014-04-07 20:32:59

标签: java arrays sorting

我在排序随机数字数组时遇到问题。

我想做的是制作一个if语句,以确保arr[0]始终大于arr[1]

为什么呢?好吧,我的程序生成0到99之间的两个随机数,它会做简单的数学问题,比如减法和除法。由于您无法正确划分55/99,因此第一个arr[0]应始终大于arr[1]

我在这里,感谢您的帮助!

public static int[] randomNumbers(){
    Random obj = new Random();

    int arr[] = new int[2];   //init array to hold 2 numbers

    arr[0] = obj.nextInt(99); //number 1 randomized 0 - 9 // sort array
    arr[1] = obj.nextInt(99); //number 2 randomized 0 - 9

    //do compare to make sure arr[0] is always greater than arr[1]
    //but how???

    return arr;

    /*int rgen = obj.nextInt(10); //first number has to be larger than second 0 - 10
    int rgen1 = obj.nextInt(9); //random 0 - 9
    int randomNumber = rgen + rgen1; //stores the answer*/
}

2 个答案:

答案 0 :(得分:4)

只需生成两个数字,然后在第二个更大时切换它们。

if (arr[1] > arr[0]) {
    int temp = arr[0];
    arr[0] = arr[1];
    arr[1] = temp;
}

答案 1 :(得分:1)

您正在生成0到98之间的数字。如果要包含99,则应调用obj.nextInt(100)。

arr[0] = obj.nextInt(100);
if(arr[0]==0)
   arr[1]=0;
else
   arr[1] = obj.nextInt(arr[0]+1);

arr [0]将在[0,100 [

]中得到一个数字

如果生成的数字为0,则arr [1]只能为0.

否则,arr [1]会在 [0,arr [0] +1 [(所以 [0,arr [0]] )中得到一个数字;

注意:将非正数传递给nextInt()会引发异常。