0

我刚开始使用Java。我正在尝试制作一个简单的(几乎是 Hello world)程序:

  1. 用户输入三个玩家的名字
  2. 程序打印这三个名字
  3. 结尾

玩家等级被称为“Jugador”。我收到 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)

爪哇:1.7.0_17;Java HotSpot(TM) 64 位服务器 VM 23.7-b01

运行时:Java(TM) SE 运行时环境 1.7.0_17-b02

系统:Linux 版本 2.6.32-41-generic 运行在 amd64 上;UTF-8;en_US (注)

截屏:

在此处输入图像描述 如果你读到这里,谢谢。

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 回答