我有这个脚本,并且如果玩家可以协助特定卡的套装,则设为标识符.所以,如果他协助,显示消息,你协助,没问题,但如果他确实虚张声势,验证永远不会完成并显示其他System.out.println(手);
其他的结果是[七个钻石,四个SPADES,七个SPADES,钻石王,更多卡]
pn50.getText()(例如,结果是CLUBS)
我怀疑是什么原因,行hand.subList(0,10).contains(pn50.getText())从未在列表中找到任何内容(即播放器的手)
例如,如果玩家扮演心灵之王,并且玩家2扮演七个俱乐部并且拥有三个心脏,则假设显示消息"玩另一个"
@Override
public boolean validCard(List<Card> hand, JTextField pn70, JTextField pn50, int i) {
if(pn70.getText().equals (pn50.getText())) {
System.out.println("you assist");
return true;
} else {
if (hand.subList(0, 10).contains(pn50.getText())) {
System.out.println("play another");
}
else
System.out.println(hand);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助?
谢谢
因为您正在将String:pn50.getText()与Card对象进行比较.Contains使用该.equals方法来测试相等性,除非你在Card上设置.equals方法与另一个String进行比较,包含的方法永远不会返回任何内容.
这是一个解决方案.我假设您可以只使用字符串制作Card对象,因此只需将该字符串包装到Card对象中并进行比较即可.
Card c = new Card(pn50.getText());
if (hand.subList(0, 10).contains(c)) {
System.out.println("play another");
}
else
System.out.println(hand);
Run Code Online (Sandbox Code Playgroud)
您还需要将Card上的.equals方法覆盖为:
public boolean equals(Card other) {
return other.getSuit().equals(this.getSuit()) && other.getNumber().equals(this.getNumber());
}
Run Code Online (Sandbox Code Playgroud)