0

Javaを始めたばかりです。私は単純な(ほぼHello world)プログラムを作ろうとしています:

  1. ユーザーは 3 人のプレーヤーの名前を入力します
  2. プログラムはこれら 3 つの名前を出力します。
  3. 終わり

プレイヤークラスは「ジュガドール」と呼ばれます。NullPointerException エラーが発生します。私は多かれ少なかれ概念を理解していますが、なぜそれが機能しないのかまだわかりません =(。

ソース:

Chicago2.java:

package chicago2;
import javax.swing.JOptionPane;
public class Chicago2 {
    public static void main(String[] args) {
        String s;
        Jugador jugadores[];
        jugadores=new Jugador[3];
        int i=1;
        System.out.println("Loading players:");
        for(Jugador x: jugadores) {
            s=JOptionPane.showInputDialog("Name of player "+i+": ");
            x = new Jugador(s);
            System.out.println("Player "+i+": "+x.getName());
            i++;
        }

        System.out.println("Printing players name:");
        for(Jugador y : jugadores) {
                System.out.println("Plays: "+y.getName());
        }
    }
}

Jugador.java:

package chicago2;
public class Jugador { 
    private String name;
    public Jugador(String nom)
    {
        name=nom;
    }
    public String getName() {
        return name;
    } 
}

私が得るエラー(出力):

走る:

プレーヤーのロード:

プレイヤー 1: あ

プレーヤー 2: b

プレーヤー 3: c

プレイヤー名の印刷:

スレッド「メイン」での例外 java.lang.NullPointerException

chicago2.Chicago2.main(Chicago2.java:19) で

Java 結果: 1

19 行目は次のとおりです。

System.out.println("Plays: "+y.getName());

作業環境:

製品バージョン: NetBeans IDE 7.3 (ビルド 201302132200)

Java: 1.7.0_17; Java HotSpot(TM) 64 ビット サーバー VM 23.7-b01

ランタイム: Java(TM) SE ランタイム環境 1.7.0_17-b02

システム: amd64 上で動作する Linux バージョン 2.6.32-41-generic。UTF-8; en_US (nb)

スクリーンショット:

ここに画像の説明を入力 ここまで読んでくれてありがとう。

4

2 に答える 2

2

ユーザーから取得している名前は、配列に保存されていません。このようにする必要があります:-

x = new Jugador(s);
jugadores[i] = x;

また、 は であるint i=1;必要がありますint i=0;

ただし、読みやすくするために、以下のコードの変更を参照してください。

System.out.println("Loading players:");
for(int i = 0; i < jugadores.length; i++) { // Better readability.
        s=JOptionPane.showInputDialog("Name of player "+i+": ");
        Jugador x = new Jugador(s);
        jugadores[i] = x; // Added
        System.out.println("Player "+i+": "+x.getName());
}
于 2013-04-03T05:29:38.563 に答える
0

実際には何も保存していませんjugadores

保存するには、行x = new Jugador(s);を次のように置き換えますx = jugadores[i-1] =new Jugador(s);

于 2013-04-03T05:30:27.750 に答える