【问题标题】:Random number array sorting随机数数组排序
【发布时间】:2014-04-07 20:32:59
【问题描述】:

我在对随机数数组进行排序时遇到问题。

我想做的是做一个 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*/
}

【问题讨论】:

  • if(arr[0] < arr[1]) ?
  • 你知道这些数字在 0 到 98 的范围内,对吧?
  • 有时我会忘记... ;)

标签: java arrays sorting


【解决方案1】:

只需生成两个数字,如果第二个更大,则切换它们。

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

【讨论】:

    【解决方案2】:

    您正在生成从 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() 将引发异常。

    【讨论】:

      猜你喜欢
      • 2015-03-04
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多