0

データを格納するためにスイング テーブルを使用して、Eclipse でタイマー アプリケーションの開発に取り組んでいます。私が直面している主な問題は、これらの変数の値が同一であっても (出力に示されているように)、この if ステートメントが true を返し続けることです。何が原因でしょうか?

コードのスニペットは次のとおりです。

String currentPID = lblCurrentPID.getText();
for (int i = 0; i < tableActive.getRowCount(); i++) {
    String currentValue = (String) tableActive.getValueAt(i, 2);
    System.out.println(i + ": Current Value: " + currentValue + " - Current PID: "+ currentPID);
    if (currentPID != currentValue) {
        System.out.println("The value and PID are not the same for some reason!");
    }
    else {
        tableActive.setValueAt(ts1.getOverallTotalTime(), i, 3);
        System.out.println(i + ": Row Was Changed!");
    }
}

出力は次のとおりです。

0: 現在の値: Test3 - 現在の PID: Test3

値と PID が何らかの理由で一致しません。

1: 現在の値: 12345 - 現在の PID: Test3

値と PID が何らかの理由で一致しません。

2: 現在の値: 54321 - 現在の PID: Test3

値と PID が何らかの理由で一致しません。

4

4 に答える 4

4
 if (currentPID != currentValue){

する必要があります

 if (!currentPID.equals(currentValue)){

equals()文字列の等価性をチェックするために使用します。==operator は、2 つの ref 変数が同じ String オブジェクトを参照しているかどうかのみをチェックします。

于 2013-03-13T14:42:59.360 に答える
1

する必要がありますif (!currentPID.equals(currentValue))

于 2013-03-13T14:44:10.040 に答える
1

Java で文字列を比較するには、Java のString.equalsと ==equalsを比較して、正当な理由をすべて確認してください。==!=

于 2013-03-13T14:44:29.813 に答える
1

String(または)Object比較を行うときは、使用することをお勧めしますequals()

 if (!currentPID.equals(currentValue)){
于 2013-03-13T14:43:02.033 に答える