如何检查Arraylist是否已包含数字?彩票号码

时间:2013-12-04 06:16:07

标签: int boolean contains

我认为代码的开头是正确的。方法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()
    }

这是我的主要问题,我在检查代码时收到失败:“方法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("");
    }
}

1 个答案:

答案 0 :(得分:2)

当你要求它工作时它起作用。但是你想要:

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);
        }
    }
....