使用随机生成器将元素添加到列表而不重复

时间:2017-01-20 04:24:55

标签: java if-statement while-loop conditional-statements

我的任务的目标是使用来自另一个列表的礼物生成礼物列表(具有最大金额价格)。最大金额(totalePrijs)不能超过500并且您在该生成的列表中不能多次出现相同的内容。所选择的礼物是使用随机发生器完成的,最高可达27(礼物数量)。

除了相同的礼物不止一次之外,它的效果非常好。我还没弄明白。要么我想要创建一个空的IntegerArray并检查该Array是否包含x,如果它确实应该从while语句的开头重新启动,否则它会将x添加到该数组并继续。

我想到的另一种方法是将if语句改为

if (selectedCadeauModel.contains(present.name) && totalePrijs + present.price < 500)

但是我认为这只是无限循环。

这是单击“生成礼物”按钮时执行的代码。

selectedCadeauModel.clear();         
      double totalePrijs = 0;

    while (totalePrijs < 500) {
        NumberGen ran = new NumberGen();
        int x = Integer.parseInt(ran.toString());            
        Cadeau present = (Cadeau) cadeauModel.elementAt(x);
        if (totalePrijs + present.price < 500) {
            totalePrijs += present.price;
            selectedCadeauModel.addElement(new Cadeau(present.name, present.price));
        } else {
            break;
        }            
        ftxTotaalPrijs.setValue(totalePrijs);
        lstGeneratedPresents.setModel(selectedCadeauModel);
        ftxGemiddeldePrijs.setValue(totalePrijs / selectedCadeauModel.size());
    }

/

public class Cadeau {

String name;
double price;

public Cadeau(String naam, double prijs) {
    name = naam;
    price = prijs;
}

/

public class NumberGen {

Random randomGenerator = new Random();
int getal = randomGenerator.nextInt(27);

@Override
public String toString() {
    return String.format("%d", getal);
}
}

0 个答案:

没有答案