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()检查字符串是否相等。==运算符仅检查两个 ref 变量是否引用同一个 String 对象。

于 2013-03-13T14:42:59.360 回答
1

当您进行String(或)Object比较时,最好使用equals()

 if (!currentPID.equals(currentValue)){
于 2013-03-13T14:43:02.033 回答
1

应该if (!currentPID.equals(currentValue))

于 2013-03-13T14:44:10.040 回答
1

为了比较 java 中的字符串,使用equals而不是==(或!=)查看Java String.equals 与 ==以获得所有充分的理由。

于 2013-03-13T14:44:29.813 回答