我们有一个大学作业,我要读一个有名字列表的文件,每个文件加上3份礼物。我能做到,但礼物是重复的,名单上的一些人得到同样的礼物不止一次。我怎样才能阻止它让每个人每次都收到不同种类的礼物?
这是我的密码:
public static void main(String[] args) throws IOException {
String path = "Christmas.txt";
String line = "";
ArrayList<String> kids = new ArrayList<>();
FileWriter fw = new FileWriter("Deliveries.txt");
SantasFactory sf = new SantasFactory();
try (Scanner s = new Scanner(new FileReader("Christmas.txt"))) {
while (s.hasNext()) {
kids.add(s.nextLine());
}
}
for (String boys : kids) {
ArrayList<String> btoys = new ArrayList<>();
int x = 0;
while (x < 3) {
if (!btoys.contains(sf.getRandomBoyToy().equals(sf.getRandomBoyToy()))) {
btoys.add(sf.getRandomBoyToy());
x++;
}
}
if (boys.endsWith("M")) {
fw.write(boys + " (" + btoys + ")\n\n");
}
}
fw.close();
}
}
3条答案
按热度按时间3pmvbmvn1#
生成3个玩具,首先将其中的2个玩具相互比较,并检查结果布尔值是否存在于字符串列表中(可能不存在),然后附加第3个玩具。
相反,您应该生成一个,并将其用于检查和添加:
x8goxv8g2#
只需使用集合数据结构而不是列表。
ktca8awb3#
java.util包中的set接口和collection接口的扩展是一个无序的对象集合,其中不能存储重复的值。它是一个实现数学集合的接口。此接口包含从集合接口继承的方法,并添加了限制重复元素插入的功能。有两个接口扩展set实现,即