0

論理演算子「!」を使用することは可能ですか?trueまたはfalseの値を保持するオブジェクトで?特にこのようなオブジェクトのために?

public class Briefcase {
    private final double amount;
    private final String model;
    private boolean removed = false;
    private String face;

    public Briefcase(double amount, int face, String model) {
        this.face = Integer.toString(face);
        this.amount = amount;
        this.model = model;
    }

    public double getAmount() {
        return amount;
    }

    @Override
    public String toString() {
        return face;
    }

    public String getModel() {
        return model;
    }

    public void remove() {
        removed = true;
        face = "X";
    }

    public boolean isRemoved() {
        return removed;
    }
}

次に、このように使用します

Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}

それは可能ですか?もしそうなら、そのドキュメントと他のいくつかの例へのリンクを私に提供してください、私はこれが同時に面白いと思います

4

5 に答える 5

1

ルーチンは、配列ではなく、オブジェクトにisRemoved のみ存在します。否定演算を使うには次のようなことを試す必要がありますBriefcase

for(BriefCase c: cases) {
    if (!c.isRemoved()) {
        // block of code
    }
}
于 2011-09-13T09:54:00.940 に答える
0

です。booleanはプリミティブ型ですが、 を使用してもおかしなことは何もありません!

于 2011-09-13T09:53:37.717 に答える
0

はい、できますが、コードに示されているように配列ではなく、!case.isRemoved().

ここでのポイントは、!(否定演算子)がブール オペランドで機能することです。

operand-expression がブール値に解決される限り! これは機能します。

于 2011-09-13T09:52:50.660 に答える
0

誤って配列にインデックスを残したのか、それとも意図的に残したのかはわかりませんが、これは間違いなく機能します。

if(!cases[i].isRemoved()){ .... block of code}

ここで、i はインデックスです。

于 2011-09-13T09:55:58.513 に答える
0

この場合 !呼び出し isRemoved() の値を否定します。ここで演算子のリストを確認できます: http://www.java-tips.org/java-se-tips/java.lang/what-is-java- operator-precedence.html

また、あなたが書くことができないと言った答えについて:

Briefcase[] cases = new Briefcase[];
if (!cases[5].isRemoved()) { .... block of code}

[] と 。() 演算子の優先順位は同じです。

行は左から右に評価されるため、[] インデックス演算子が最初に実行され、ブリーフケース インスタンスが取得されます。このインスタンスで isRemoved() メソッドを呼び出すことができます。

于 2011-09-13T10:00:45.790 に答える