我对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);
}
}
}
发布于 2018-10-02 13:17:00
好吧,所以for循环是有问题的。
习惯这一点:
for (int i = 0; i < n; i++) {
如果您的for循环看起来不是这样,除非您非常高级,否则您可能做错了。
例如,在您的示例中:
for (int value = min; value <= max;) {
您可以将一个名为value的变量初始化为最小值。接下来的测试是value是否小于max (除非min大于max),每次执行循环体后所做的事情是...没什么。
因此你会无限地循环。
与黄金标准进行比较:
for (int i = 0; i < n; i++) {
它将变量i初始化为0,它的测试是,如果i小于某个数字n,那么在每次执行循环体之后,它会递增i。
因此,除非我们对i做了一些恶作剧的事情(或者提前退出,中断或返回),否则我们将重复n次循环体。
Cf:
for (int value = min; value <= max; [_____you forgot this bit____] ) {
发布于 2018-10-02 13:16:57
问题是,您的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);
}
}
}
https://stackoverflow.com/questions/52602315
复制相似问题