2

タイトルが紛らわしいのはわかっていますが、それはそれが理由です。少し長いので、私と一緒にいてください。

これは、コードを設計したレイアウトです

変数コンストラクター メソッド。

私も名前でいっぱいの Jlist を埋めようとしています。メソッドを使用してそれらの名前を取得したい。ここに行きます。

私の変数には、JListがあります。contactNames と呼ばれます。連絡先の名前である 5 つの文字列を格納する配列もあります。とにかくそのためのコードはこちら

String contact1;
String contact2;
String contact3;
String contact4;
String contact5;

String[] contactListNames;

JList contactList;

簡単です。次に、コンストラクターで、配列の内容で自分自身を埋めるように定義された Jlist を持っています

    String[] contactListNames = new String[5];
    JList contactList = new JList(contactListNames);
    fillContactList();

そのメソッド fillContactList() はまもなく登場します。

今、ここで物事が盛り上がります。私は3つの異なる方法を作成しましたが、それらはすべて機能していません. 基本的に、それらすべてで配列を埋めようとしています。これは最も単純なものです。Jlist を設定せず、複雑なことは何もしません。一度に 1 ビットずつ配列を埋めようとするだけです。

public void fillContactList()
       {
           for(int i = 0;i<3;i++)
           {
               try
               {
                   String contact;
                   System.out.println(" please fill the list at index "+ i);
                   Scanner in = new Scanner(System.in);
                   contact = in.next();
                   contactListNames[i] = contact;
                   in.nextLine();
               }
               catch(Exception e)
               {
                e.printStackTrace();   
               }
           }
       }

残念ながら、これは機能しません。インデックス 0 でそれを埋めるために印刷を取得します。何かを入力すると、

    contactListNames[i] = contact;

つまり、私の質問は簡単に言えば

そのメソッドから配列を埋めることができないのはなぜですか。

************************************************888 ** ************************************************888

リクエストによるスタック トレース インデックス 0 のリストを埋めてください

overtone
please fill the list at index 1
 java.lang.NullPointerException
at project.AdminMessages.fillContactList(AdminMessages.java:410)
at project.AdminMessages.<init>(AdminMessages.java:91)
at project.AdminUser.createAdminMessages(AdminUser.java:32)
at project.AdminUser.<init>(AdminUser.java:18)
at project.AdminUser.main(AdminUser.java:47)
4

3 に答える 3

2

コンストラクターで配列を定義するには、これらの行に沿って何かを行うことができます。

// if values are predefined, you can explicitly fill the array
String[] contacts = {"Bill Gates", "Steve Jobs", "Jon Skeet"};

// or this way, both will work.
String[] contacts = new String[2];

Java Doc の JList を見ると、最も確実に配列を渡すことができますJList

 String[] data = {"one", "two", "three", "four"};
 JList dataList = new JList(data);

NullPointerException配列が初期化されていないため、取得contactListNamesしています。初期化する必要があります。

于 2010-04-23T13:09:32.350 に答える
1

他の変数と同じように、コンストラクターで配列を定義します。したがって、次のようになります。

// define an array of size 3
String[] contactListNames = new String[3]; 

例外が発生する理由は、実際に配列を初期化していないためです。あなたはそれを宣言しますが、値に設定することはありません(またはサイズを指定することはありません)。エラーのスタック トレースを投稿する必要がありますが、NullPointerException であると思われます。

于 2010-04-23T13:08:17.047 に答える
0

次に、コンストラクターで、配列の内容で自分自身を埋めるように定義された Jlist を持っています

String[] contactListNames = new String[5];
JList contactList = new JList(contactListNames);
fillContactList();

ここで行っているのは、クラスで定義されたものをシャドウする新しいローカル変数を作成することです。次のように変更します。

 contactListNames = new String[5];
 contactList = new JList(contactListNames);
 fillContactList();
于 2010-04-23T13:36:02.187 に答える