Java 彩票号码
Java Lottery Numbers
我正在制作一个像彩票一样的小程序。关键是会有7个生成的数字,彼此不同(第七个数字除外)。我的代码是这样的:
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class LotteryNumbers {
public static void main(String[] args) {
Random generator = new Random();
Set<Integer> seen = new HashSet<Integer>();
int index = 1;
int luckyNumber = generator.nextInt(49);
while (index < 7) {
if (seen.contains(luckyNumber)) {
continue;
}
seen.add(luckyNumber);
System.out.println("Number " + index + ": " + luckyNumber);
index++;
luckyNumber = generator.nextInt(49);
}
System.out.println("Bonus Number :" + generator.nextInt(49));
}
}
如您所见,我创建了一个名为 seen 的集合,其中存储了所有生成的数字。但是,该程序无法正常运行,因为循环有时会意外停止。我的错误是什么?
谢谢。 :)
如果您输入 if
,您将陷入无限循环 - 不会生成新数字,并且在循环的每次迭代中计算相同的数字,并且 if
已输入。
解决这个问题的一种方法是在这种情况下生成另一个数字:
while (index < 7) {
if (seen.contains(luckyNumber)) {
luckyNumber = generator.nextInt(49); // here
continue;
}
seen.add(luckyNumber);
System.out.println("Number " + index + ": " + luckyNumber);
index++;
luckyNumber = generator.nextInt(49);
}
System.out.println("Bonus Number :" + generator.nextInt(49));
当 Set 包含所选的幸运数字时,您似乎进入了一个无限循环,因为您从未重置 luckyNumber
while (index < 7) {
if (seen.contains(luckyNumber)) {
continue;
}
这应该是:
while (index < 7) {
if (seen.contains(luckyNumber)) {
luckyNumber = generator.nextInt(49);
continue;
}
您还应该了解如何使用调试器,您很可能会通过单步执行代码立即识别错误。
试试这个,我的简化方法:
Set<Integer> seen = new HashSet<Integer>();
while (seen.size() < 7) {
int luckyNumber = generator.nextInt(49);
seen.add(luckyNumber);
}
System.out.println(seen);
应该可以。
我正在制作一个像彩票一样的小程序。关键是会有7个生成的数字,彼此不同(第七个数字除外)。我的代码是这样的:
import java.util.HashSet;
import java.util.Random;
import java.util.Set;
public class LotteryNumbers {
public static void main(String[] args) {
Random generator = new Random();
Set<Integer> seen = new HashSet<Integer>();
int index = 1;
int luckyNumber = generator.nextInt(49);
while (index < 7) {
if (seen.contains(luckyNumber)) {
continue;
}
seen.add(luckyNumber);
System.out.println("Number " + index + ": " + luckyNumber);
index++;
luckyNumber = generator.nextInt(49);
}
System.out.println("Bonus Number :" + generator.nextInt(49));
}
}
如您所见,我创建了一个名为 seen 的集合,其中存储了所有生成的数字。但是,该程序无法正常运行,因为循环有时会意外停止。我的错误是什么?
谢谢。 :)
如果您输入 if
,您将陷入无限循环 - 不会生成新数字,并且在循环的每次迭代中计算相同的数字,并且 if
已输入。
解决这个问题的一种方法是在这种情况下生成另一个数字:
while (index < 7) {
if (seen.contains(luckyNumber)) {
luckyNumber = generator.nextInt(49); // here
continue;
}
seen.add(luckyNumber);
System.out.println("Number " + index + ": " + luckyNumber);
index++;
luckyNumber = generator.nextInt(49);
}
System.out.println("Bonus Number :" + generator.nextInt(49));
当 Set 包含所选的幸运数字时,您似乎进入了一个无限循环,因为您从未重置 luckyNumber
while (index < 7) {
if (seen.contains(luckyNumber)) {
continue;
}
这应该是:
while (index < 7) {
if (seen.contains(luckyNumber)) {
luckyNumber = generator.nextInt(49);
continue;
}
您还应该了解如何使用调试器,您很可能会通过单步执行代码立即识别错误。
试试这个,我的简化方法:
Set<Integer> seen = new HashSet<Integer>();
while (seen.size() < 7) {
int luckyNumber = generator.nextInt(49);
seen.add(luckyNumber);
}
System.out.println(seen);
应该可以。