0

だから私は最初にクラスのこのオブジェクトを宣言します:

static enterprise[] en = new enterprise[10];

次に、メイン内:

for(int i=0;i<=9;i++){
    System.out.println("Insert name of the " + (i+1) + "ª enterprise");
    en[i] = new enterprise(i);
    Scanner scanner = new Scanner(System.in);
    en[i].setName(scanner.next());
    System.out.println(en[i].Name);
    }

そして、同じクラスの別のメソッドで:

for(int i = 0; i<=9;i++){
    System.out.println(en[i].index + "- " + en[i].Name);
}

したがって、最初に最初のエンタープライズ A、2 番目の B、C、D、E、F、G、H、I、J に挿入した場合..出力として 1 A 2 B などを取得する必要がありますが、9 J 10 を取得します。回。なぜこれが起こるのですか?

編集: ここにエンタープライズ クラスがあります: http://pastebin.com/gUCWRRgK

4

2 に答える 2

1

これは、フィールドが静的に宣言されているためです。

public class enterprise {
    static String Name;
    static int index;

フィールドが静的な場合、変数がクラスに関連付けられていることを意味します。静的変数は、インスタンスごとに異なる値を持つことはできません。

これは次のようになります。

public class enterprise {
    String Name;
    int index;
于 2012-08-02T23:22:05.963 に答える