我对Java还是很陌生,大多数时候我都不知道我在做什么。我正在尝试编写一个代码,您可以在其中选择要生成的数量,所生成的随机数的最大和最小数量。
它会无限生成最大和最小范围内的数字。
import java.util.Scanner;
import java.util.Random;
public class random_unfinished {
public static void main(String[] args) {
int numofgen, max, min, generated, avg, i;
Scanner scan = new Scanner(System.in);
Random random = new Random();
System.out.println("How many numbers would you like to generate?");
numofgen = scan.nextInt();
System.out.println("What is the maximum number?");
max = scan.nextInt() + 1;
System.out.println("What is the minimum number?");
min = scan.nextInt();
for (int value = min; value <= max;) {
value = random.nextInt(max - min) + min;
System.out.println("numbers are " + value);
}
}
}
答案 0 :(得分:2)
好的,所以for循环是有问题的。
习惯于此:
for (int i = 0; i < n; i++) {
如果您的for循环看起来不是这样,除非您非常高级,否则您可能做错了。
以您的情况为例:
for (int value = min; value <= max;) {
您将一个名为value的变量初始化为最小值。 您要继续进行的测试是值是否小于最大值(除非min大于max,否则它将为max) 在执行循环主体之后,您每次执行的操作都不是。
因此,您可以无限循环。
与黄金标准比较:
for (int i = 0; i < n; i++) {
将变量i初始化为0 它是否继续的测试是如果我小于某个数字n 每次执行循环主体后,它都会递增i。
Ergo-除非我们对i进行任何调皮的操作(或使用break或return提前退出),否则我们将重复循环主体n次。
cf:
for (int value = min; value <= max; [_____you forgot this bit____] ) {
答案 1 :(得分:0)
问题是您的for循环将从min
到max
。另外,它缺少update子句,这意味着value
永远不会改变。因此,您将陷入无限循环。
相反,您应该从0
转到numofgen
,并确保每次将i
更新1。这样会生成用户希望的数量。
import java.util.Scanner;
import java.util.Random;
public class random_unfinished {
public static void main(String[] args) {
int numofgen, max, min, generated, avg, i;
Scanner scan = new Scanner(System.in);
Random random = new Random();
System.out.println("How many numbers would you like to generate?");
numofgen = scan.nextInt();
System.out.println("What is the maximum number?");
max = scan.nextInt() + 1;
System.out.println("What is the minimum number?");
min = scan.nextInt();
for (int i = 0; i < numofgen; i++) {
value = random.nextInt(max - min) + min;
System.out.println("numbers are " + value);
}
}
}