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

true を返します。

私は何が欠けていますか?

また、A、B、または C をテストするために複数の if else ステートメントを使用しようとしましたが、A に対して false になります。私の作成の例外がスローされるため、B と C はテストされません。

4

4 に答える 4

1

ここに2つのことがあります:

  1. 比較のために != を equals メソッドに置き換えます
  2. || 置き換えます と &&
于 2013-03-23T20:10:37.590 に答える
0

文字列を比較するときoneString.equals(otherString)は、 ではなく常に を使用してください。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")

2 つの文字列の == を使用した Java の比較は false ですか?

于 2013-03-23T20:08:36.260 に答える
0

==!=オブジェクト参照を比較します。それらは同じオブジェクトではないため、等しくありません。

String.equals(otherString)文字列の内容を比較します。この機能を使用したい。

于 2013-03-23T20:10:22.300 に答える