0

配列内の値をチェックし、それらをコンボ ボックス内の値と比較するループがあります。何らかの理由で、それらが一致しても、比較は true と評価されません。

トラブルシューティング用にシステム出力が追加されたループを次に示します。

System.out.println("Race Changed, setting new attribute min/maxes");
                int raceIndex = -1;

                for (int i=0;i<5;i++){
                    System.out.println("RaceCheck index i="
                                      + Integer.toString(i)
                                      + " raceIndex="
                                      + Integer.toString(raceIndex)
                                      + " miscData.raceData[i].raceName="
                                      + miscData.raceData[i].raceName 
                                      + " cboRace.getValue()=" 
                                      + cboRace.getValue()
                                      + " match found="
                                      + (miscData.raceData[i].raceName == cboRace.getValue()));
                    System.out.println("|"+miscData.raceData[i].raceName+"|");
                    System.out.println("|"+cboRace.getValue()+"|");
                    if (miscData.raceData[i].raceName == cboRace.getValue()) {
                        raceIndex = i;
                    }       
                }

                if (raceIndex < 0) {
                    // race was not found, default to Human
                    System.out.println("Race " + cboRace.getValue() + " was not found in racedata");
                    raceIndex = 0;
                }

出力は次のとおりです。

Race Changed, setting new attribute min/maxes
RaceCheck index i=0 raceIndex=-1 miscData.raceData[i].raceName=Human cboRace.getValue()=Dwarf match found=false
|Human|
|Dwarf|
RaceCheck index i=1 raceIndex=-1 miscData.raceData[i].raceName=Elf cboRace.getValue()=Dwarf match found=false
|Elf|
|Dwarf|
RaceCheck index i=2 raceIndex=-1 miscData.raceData[i].raceName=Dwarf cboRace.getValue()=Dwarf match found=false
|Dwarf|
|Dwarf|
RaceCheck index i=3 raceIndex=-1 miscData.raceData[i].raceName=Ork cboRace.getValue()=Dwarf match found=false
|Ork|
|Dwarf|
RaceCheck index i=4 raceIndex=-1 miscData.raceData[i].raceName=Troll cboRace.getValue()=Dwarf match found=false
|Troll|
|Dwarf|
Race Dwarf was not found in racedata

コンボボックスにJavaFXを使用して、Java 7 Update 40を使用しています。それらを比較するときに、一致する値をtrueと評価するにはどうすればよいですか?

4

1 に答える 1

2

Java (JavaFX も同様)では、演算子ではなくメソッドObjectと比較する必要があります。演算子は、参照によって、実際にはメモリ アドレスによってオブジェクトを比較します。s もオブジェクトなので、.equals()====String

if (miscData.raceData[i].raceName.equals(cboRace.getValue())) {
    raceIndex = i;
}

参考までに、 Java 文字列比較に従ってください。

于 2013-11-13T22:28:16.827 に答える