【发布时间】:2013-12-04 06:16:06
【问题描述】:
我认为代码的开头是正确的。方法 containsNumber() 是我的弱点。检查代码时,我得到了 7 个不同的彩票号码(我应该这样做,这是正确的),但我的检查程序说我在返回真/假值时失败。
import java.util.ArrayList;
import java.util.Random;
public final class LotteryNumbers {
private ArrayList<Integer> numbers;
private Random random = new Random();
public LotteryNumbers() {
// We'll format a list for the numbers
this.numbers = new ArrayList<Integer>();
// Draw numbers as LotteryNumbers is created
this.drawNumbers();
}
public ArrayList<Integer> numbers() {
return this.numbers;
}
public void drawNumbers() {
while (numbers.size() <7){
int number = random.nextInt(39)+1;
if (containsNumber(number)==true){
this.numbers.add(number);
}}
// Write the number drawing here using the method containsNumber()
}
这是我的主要问题,我在签入代码时遇到了 FAIL:“尽管抽奖号码在抽奖号码列表中,但方法 containsNumber() 返回 false:15”
public boolean containsNumber(int numberi) {
if (!this.numbers.contains(numberi)){
return true;
}
return false;
}
}
我的主程序:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
LotteryNumbers lotteryNumbers = new LotteryNumbers();
ArrayList<Integer> numbers = lotteryNumbers.numbers();
System.out.println("Lottery numbers:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println("");
}
}
【问题讨论】:
-
不要这样做,而是创建一组所有可能的单乐透号码(球),随机播放结果序列,并取前 n 个号码(球) .这是similar answer I wrote(它用于 C#,但方法相同并讨论“为什么”),然后是 see this answer 用于 Java 中的随机播放。