问题:
编写一个程序来创建一个大小为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]+ " ");
}
答案 0 :(得分:0)
计算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);
答案 1 :(得分:0)
有些评论可以帮助您:
A)
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步。
继续......下一步是创建一个方法&#39; computeLocation&#39;并且您可以使用自己的generateIntBetween
。