我怎么能不点一桶以上的爆米花(如果有声明的话)



为什么我可以在一行中键入2次或更多次爆米花

因为我使用了set.add和第二次键入爆米花时应该给我一个错误,因为我不能在一个集合中有两个相同的值?我怎么能做到这一点,这样我就只能打一次爆米花,当我尝试打爆米花时,第二次就会出错。

public void Popcorn() {
boolean stop = false;
while (!stop) {
String s = scanner.nextLine();
Set<String> set = new HashSet<>();
if (s.equals("popcorn")&&!set.contains("popcorn")) {
set.add("popcorn");
int popcorn = 5;
setPopCornValue(getPopCornValue() + popcorn);
continue;
}

}
if(s.equals("exit")){
stop=true;
break;
}
} ```

如果你查看HashSet.add(E(的Javadoc,你会发现它被定义为

如果指定的元素尚未存在,则将其添加到此集合中。更正式地说,如果这个集合不包含元素e2,使得(e==null?e2==null:e.equals(e2((。如果该集合已经包含元素,则调用将离开该集合不变并返回false。

因此,您可以执行类似的操作

if (set.add(s)) {
.. do stuff for having added popcorn
} else {
.. do stuff for having rejected popcorn because we already have it
}

最新更新