gpt4 book ai didi

java - 比较两个对象的字符串每次都返回 false - javafx

转载 作者:行者123 更新时间:2023-12-01 16:22:19 25 4
gpt4 key购买 nike

我正在尝试制作内存拼图游戏。所以我有 Card.java 类:


import javafx.geometry.Pos;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;


public class Card extends StackPane {
private Text text = new Text ();
private String path;
public Card (String p){
this.path=p;
Rectangle rectangle = new Rectangle (80,80);
rectangle.setFill (null);
rectangle.setStroke (Color.BLACK);
text.setText (this.path);
setAlignment (Pos.CENTER);
getChildren ().addAll(rectangle, text);
hidden ();
}
public String getPath () {
return path;
}
public boolean isShown(){
return text.getOpacity () ==1;
}
public void shown(){
text.setOpacity (1);
}
public void hidden(){
text.setOpacity (0);
}
}

Main.java:

[...]
List<Card> cards = new ArrayList<> ();
for ( int i = 1; i <= numberOfPairs; i++ ) {
cards.add (new Card (String.valueOf (i)));
cards.add (new Card (String.valueOf (i)));
}
Collections.shuffle (cards);
int i = 0;
int j = 0;
for ( Card card : cards ) {
card.setOnMouseClicked (e -> cardClicked (card));
if (i == this.cardsInOneRow) {
j++;
i = 0;
}
gridpane.add (card, i, j);
i++;
}
[...]
private Card selectedCard = null;
private int clickCounter = 0;
public void cardClicked (Card card) {
if (card.isShown () || clickCounter == 2) {
return;
}
clickCounter++;
if (selectedCard == null) {
selectedCard = card;
card.shown ();
} else {
card.shown ();
if (card.getPath ()!=selectedCard.getPath ()) {
selectedCard.hidden ();
card.hidden ();
}
selectedCard=null;
clickCounter=0;
}
}

在 Main.java 中,我创建了几对卡片,设置鼠标单击功能并将它们放置在 GridPane 中。然后我尝试比较两张卡的字符串路径,但每次结果都是 false。我不知道如何解决它。

最佳答案

试试这个:if(!card.getPath().equals(selectedCard.getPath())) {}

如果你想比较字符串的值,你必须使用equals()

查看原因:String.equals versus ==

关于java - 比较两个对象的字符串每次都返回 false - javafx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62235835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com