0

我似乎遇到了布尔测试的问题。当我使用此代码时:

public boolean setPkg (String inPkg)
    {
        boolean isValid;

        if ((inPkg.toUpperCase() != "A" ) || (inPkg.toUpperCase() != "B" ) || (inPkg.toUpperCase() != "C"))
            isValid = false;
        else
        {
            pkg = inPkg;
            isValid = true;
        }

        return isValid;
    }

它在“A”上返回 false。但是,当我只测试“A”时:

...
if (inPkg.toUpperCase() != "A" ) 
isValid = false;
            else
            {
                pkg = inPkg;
                isValid = true;
            }

            return isValid;
...

它返回真。

我错过了什么?

我还尝试使用多个 if else 语句来测试 A、B 或 C,但 A 的结果是错误的。B 和 C 没有得到测试,因为我的制造异常被抛出。

4

4 回答 4

1

这里有两件事:

  1. 用 equals 方法替换 != 进行比较
  2. 替换 || 和 &&
于 2013-03-23T20:10:37.590 回答
0

比较字符串时始终使用oneString.equals(otherString), not 。oneString == otherString

例如,而不是:

(inPkg.toUpperCase() != "A" )

改用这个:

(!(inPkg.toUpperCase().equals("A")))

切勿将字符串与==or进行比较!=。请参阅:如何比较 Java 中的字符串?

于 2013-03-23T20:07:54.597 回答
0

问题是您正在使用==比较字符串。这不会像您认为的那样做(它比较字符串引用,而不是字符序列)。

改为使用s1.equals(s2),如

!inPkg.toUpperCase().equals("A")

等等

看到两个字符串的 == 的 Java 比较是假的吗?

于 2013-03-23T20:08:36.260 回答
0

==!=比较对象引用。它们不相等,因为它们不是同一个对象。

String.equals(otherString)比较字符串的内容。你想使用这个功能。

于 2013-03-23T20:10:22.300 回答