Java初学者挑战:在while循环中生成随机数
这个挑战来自第4章 编写一个Java初学者挑战:在while循环中生成随机数,java,Java,这个挑战来自第4章 编写一个while循环,该循环生成1到100之间的随机数 在生成相同的数字两次后停止循环 我最担心的是,我不知道如何继续初始化数组(如果您在这里使用数组的话),因为我不知道数组的大小(如果这有意义的话) 我能得到一些指导吗?如果随机数仅在1和100之间生成,则使用大小为100的数组。但是,一般来说,该问题可以通过更通用的关联容器(例如HashMap)来解决,其中不需要连续键。如果随机数仅在1和100之间生成,则使用大小为100的数组。但是,一般来说,这个问题可以通过一个更通用
while
循环,该循环生成1到100之间的随机数
在生成相同的数字两次后停止循环
我最担心的是,我不知道如何继续初始化数组(如果您在这里使用数组的话),因为我不知道数组的大小(如果这有意义的话)
我能得到一些指导吗?如果随机数仅在1和100之间生成,则使用大小为100的数组。但是,一般来说,该问题可以通过更通用的关联容器(例如HashMap)来解决,其中不需要连续键。如果随机数仅在1和100之间生成,则使用大小为100的数组。但是,一般来说,这个问题可以通过一个更通用的关联容器来解决,例如HashMap,其中不需要连续键。如果“你不知道数组的大小”,那么你需要一个动态增长的“数组”。。。这是一个很好的例子 显然有更有效的方法,但我认为这目前还可以。如果“你不知道数组的大小”,那么你需要一个动态增长的“数组”。。。这是一个很好的例子
显然有更有效的方法,但我认为现在就可以了。您还可以使用Java
集的实现,它确保没有重复元素(一种检测重复元素的简单方法)。但是,声明一个简单的int[]numbers=int[100]()代码>数组也可以做到这一点:-)。您还可以使用Java集合的实现,它确保没有重复元素(一种检测重复元素的简单方法)。但是,声明一个简单的int[]numbers=int[100]()代码>数组也会起作用:-)。在我看来,逻辑应该是初始化一个100长度的数组,以及一个零索引的计数器变量。如果为true,则创建一个介于1和100之间的随机整数。检查数组中生成的数字的索引。如果未找到,则添加数字并递增计数器
下面是伪代码
int nums[] = new int[100];
counter = 0;
while(true) {
test = random(1, 100);
if(nums.indexOf(test) != -1) {
return;
}
nums[counter] = test;
counter++;
}
在我看来,逻辑应该是初始化一个100长度的数组,以及一个零索引计数器变量。如果为true,则创建一个介于1和100之间的随机整数。检查数组中生成的数字的索引。如果未找到,则添加数字并递增计数器
下面是伪代码
int nums[] = new int[100];
counter = 0;
while(true) {
test = random(1, 100);
if(nums.indexOf(test) != -1) {
return;
}
nums[counter] = test;
counter++;
}
您可以使用大小为100的布尔值数组;这是家庭作业,简单的家庭作业。这类东西……好吧,我会保持沉默。如果我不知道什么,我会问,所以请为自己保留一些明智的评论,让这更有趣,而不是100个bool
s数组,你可以使用两个long
s。提示:使用位技巧。您可以使用大小为100的布尔数组。这不是挑战;这是家庭作业,简单的家庭作业。这类东西……好吧,我会保持沉默。如果我不知道什么,我会问,所以请为自己保留一些明智的评论,让这更有趣,而不是100个bool
s数组,你可以使用两个long
s。提示:使用位技巧。+1表示建议哈希集。对于这个任务,java.util.HashSet可能比HashMap更适合,不过,建议使用散列集时,+1。不过,java.util.HashSet可能比HashMap更适合这项任务。不幸的是,Russell先生还没有把我介绍给ArraList,所以这必须是另一种方式。@lemmetry我真的不明白comp sci学生们的这种“我没有在课堂上学过,所以它是被禁止的”态度。大学的一切都是自主学习不幸的是,拉塞尔先生还没有把我介绍给ArraList,所以这必须是另一种方式。@lemmetry我真的不明白comp-sci学生们的这种“我没有在课堂上学会,所以这是被禁止的”态度。大学就是自我导向的学习