我刚开始使用Java。我试图制作一个简单的(几乎是Hello world)程序:
玩家类叫做#34; 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:a
玩家2:b
球员3:c
打印玩家姓名:
线程中的异常" main"显示java.lang.NullPointerException
at chicago2.Chicago2.main(Chicago2.java:19)
Java结果:1
第19行是:
System.out.println("Plays: "+y.getName());
工作环境:
产品版本:NetBeans IDE 7.3(Build 201302132200)
Java: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-在amd64上运行的通用; UTF-8; en_US(nb)
截图:
如果你读到这里,谢谢你。
答案 0 :(得分: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());
}
答案 1 :(得分:0)
您实际上并未在jugadores
中存储任何内容。
要存储,请将行x = new Jugador(s);
替换为x = jugadores[i-1] =new Jugador(s);