-2

こんにちはすべて私はなぜエラーを生成する次のコードを持っています。何か知っているなら私に提案してください。

public class Class {
    public static void main(String args[]) {
        public int i = 10;
        i = i++;
        System.out.println("Value of i=" + i);
    }
}
4

7 に答える 7

3

ローカル変数にアクセス指定子を指定できないため

public int i = 10;

成功する

int i = 10;

また、assyliasがコメントしたように、あなたがそうするならば、それは割り当てに何の影響も与えません。i = i++;

于 2012-05-15T10:22:52.840 に答える
1

publicローカル変数に可視性修飾子、を使用しています。ローカル変数のスコープは常にそのメソッド内に限定されているため、これは許可されていません(そして意味がありません)。

次のコード:

public class Class {
    public static void main(String args[]) {
        int i = 10;
        i = i++;
        System.out.println("Value of i=" + i);
    }
}

...問題なくコンパイルします。

メソッドの外側をフィールドに移動する可能性もあることに注意してくださいi。これも機能します。

public class Class {

    public int i = 10;

    public static void main(String args[]) {
        i = i++;
        System.out.println("Value of i=" + i);
    }
}

i = i++それはまたあなたが期待しているものとは異なる問題を引き起こしているかもしれないことに注意してください、しかしより完全な説明なしで言うのは難しいです。あなたはおそらくi++その行を意味していました。

于 2012-05-15T10:23:01.723 に答える
1

「i」はローカル変数です。パブリック/プライベート/保護することはできません。最終としてマークすることはできますが。

于 2012-05-15T10:27:00.437 に答える
0

iはクラス変数ではないため、「public int」ではなく、「int i=10」としてのみ定義する必要があります。

于 2012-05-15T10:23:03.870 に答える
0

エラーは、publicローカル変数に適用できないことです。変化する:

public int i = 10;

int i = 10;
于 2012-05-15T10:23:08.393 に答える
0

iメソッドのローカル変数ですmain。ローカル変数にはスコープがありませんpublic, private, protected。フィールドメンバーのみがそれらを持つことができます。したがって、変数publicの前にある修飾子を削除します。i

于 2012-05-15T10:23:18.753 に答える
0

public int i = 10; //これによりエラーが発生します

次のようなスコープでローカル変数を宣言することはできませんpublic or private

に変更しint i=10;ます。

ありがとう

于 2012-05-15T10:23:32.560 に答える