【问题标题】:How to check if Arraylist contains already a number? Lotterynumbers如何检查 Arraylist 是否已经包含一个数字?彩票号码
【发布时间】: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 中的随机播放。

标签: int boolean contains


【解决方案1】:

它会按照您的要求运行。但你想要:

public boolean containsNumber(int numberi) {
    return this.numbers.contains(numberi);
}

代码的第一部分也必须更正:

public void drawNumbers() {
    while (numbers.size() <7){
        int number = random.nextInt(39)+1;
        if (!containsNumber(number)){
            this.numbers.add(number);
        }
    }
....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-12-19
    相关资源
    最近更新 更多