【问题标题】:Print random numbers in array size 20 and print number in lndex number以数组大小 20 打印随机数并以索引号打印数字
【发布时间】:2015-10-17 16:18:21
【问题描述】:

问题:

编写一个程序来创建一个大小为 20 的数组来存储整数。然后,程序应生成 1 到 7 之间的随机数并将其插入到数组中。接下来,程序应该将数组打印为输出。
一个简单的子集是一个数组的一部分,它由一组相邻的 4 个元素组成。程序会生成一个介于 0 到 19 之间的随机数,它代表数组中的位置(即索引号)。然后,程序应该从该位置打印 4 个元素。该程序应考虑数组的边界。此程序没有用户输入。
您的程序必须至少包含以下方法:
- insertNumbers,它将一个整数数组作为输入并将随机数存储在其中。 - computeLocation,生成位置随机数并返回。

程序的示例运行如下所示:

示例输出 #1:
阵列:2 7 4 3 1 5 7 2 3 6 2 7 1 3 2 4 5 3 2 6
随机位置:2
子集:4 3 1 5

示例输出 #2:
阵列:2 7 4 3 1 5 7 2 3 6 2 7 1 3 2 4 5 3 2 6
随机位置:18
子集:2 6 2 7

到目前为止,我发现了什么: 公共类 AssignmentQuestion3 {

public static int insertNumbers(int n1,int n2)
{
    int min = n1;
    int max = n2;        
    int randomNumber = min + (int) (Math.random() * (max-min)+1);
    return randomNumber;
}
public static int computeLocation(int l1,int l2)
{
    int min = l1;
    int max = l2;
    int computeLocation = min + (int) (Math.random() * (max-min) + 1);
    return computeLocation;
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
int array[] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

System.out.print("Arrays: ");
for(int i = 0; i < 20; i++)
{
    int random1 = insertNumbers(1, 7);
    array[i] = random1;
    System.out.print(array[i]+ " ");
}

【问题讨论】:

  • Stackoverflow.com != DoMyHomeWorkForFree.com :P
  • 我做了一个随机数生成器,但已经被卡住了。
  • 它继续打印数组,因为第一个数字将为 0,然后其余 19 位数字将是相同的数字。
  • 设置计算随机数的上下限
  • 向我们展示您到目前为止编写的代码,告诉我们它做了什么以及应该做什么。

标签: java arrays random numbers location


【解决方案1】:

您计算 1 到 7(含)之间随机数的公式是错误的。它实际上是计算 2 到 7(含)之间的随机数。您的公式中只缺少一个括号。

所以这个:

int randomNumber = min + (int) (Math.random() * (max - min) + 1);

应该是这样的:

int randomNumber = min + (int) (Math.random() * ((max - min) + 1));

因为乘法是在加法之前完成的,所以您的版本实际上等于:

int randomNumber = min + (int) ((Math.random() * (max - min)) + 1);

【讨论】:

    【解决方案2】:

    一些可以帮助你的备注:

    一)

    public static int insertNumbers(int n1,int n2)
    {
        int min = n1;
        int max = n2;        
        int randomNumber = min + (int) (Math.random() * (max-min+1));
        return randomNumber;
    }
    

    这是一个非常好的方法,但它不是insertNumbers。将其重命名为 generateIntBetween 并将其用作 insertNumbers 中的辅助函数。

    B)

    在您的作业中,它说要创建一个insertNumbers,它将整个数组作为参数并填充它。我不会为你写,但标题应该是这样的:

    public static void insertNumbers (int[] array)
    

    C)

    int array[] ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    

    做同样的事情

    int array[] = new int[20];
    

    int[] array = new int[20];
    

    (我更喜欢后者)

    D)

    看来您在完成作业的第 1 步时做得很好。 继续...下一步是创建一个方法“computeLocation”,您可以使用自己的generateIntBetween

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-10
      • 2021-08-12
      相关资源
      最近更新 更多