布尔测试问题

时间:2013-03-23 20:07:20

标签: java boolean

我似乎遇到布尔测试问题。当我使用这段代码时:

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;
...

它返回true。

我错过了什么?

我还尝试使用多个if else语句来测试A,B或C,并且我得到了假的A. B和C不会被测试,因为我的制作被抛出了。

4 个答案:

答案 0 :(得分:1)

这里有两件事:

  1. replace!= with equals方法进行比较
  2. 替换||与&&

答案 1 :(得分:0)

比较字符串时,请始终使用oneString.equals(otherString),而不是oneString == otherString

例如,而不是:

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

改为使用:

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

从不将字符串与==!=进行比较。请参阅:How do I compare strings in Java?

答案 2 :(得分:0)

问题在于您使用==来比较字符串。这不符合您的想法(它比较字符串引用,而不是字符序列)。

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

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

请参阅Java comparison with == of two strings is false?

答案 3 :(得分:0)

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

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

相关问题