我似乎遇到布尔测试问题。当我使用这段代码时:
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不会被测试,因为我的制作被抛出了。
答案 0 :(得分:1)
这里有两件事:
答案 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")
等
答案 3 :(得分:0)
==
和!=
比较对象引用。它们并不相同,因为它们不是同一个对象。
String.equals(otherString)
比较String的内容。你想使用这个功能。