初学者:空指针异常
Posted
技术标签:
【中文标题】初学者:空指针异常【英文标题】:Beginner: null pointer exception 【发布时间】:2013-03-24 15:44:08 【问题描述】:我刚开始接触 Java。我正在尝试制作一个简单的(几乎是 Hello world)程序:
-
用户输入三个玩家的名字
程序打印这三个名字
结束
玩家类被称为“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
打印球员姓名:
线程“主”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
系统:Linux 版本 2.6.32-41-generic 在 amd64 上运行; UTF-8; en_US (nb)
截图:
如果你读到这里,谢谢。
【问题讨论】:
【参考方案1】:您从用户那里获得的名称没有存储在您的数组中。你需要这样做:-
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());
【讨论】:
更好的是,将for(Jugador x: jugadores)
更改为for (int i = 0; i < jugadores.length; ++i)
等...遍历未初始化的数组是非常不寻常的。【参考方案2】:
您实际上并没有在jugadores
中存储任何内容。
要存储,请将x = new Jugador(s);
行替换为x = jugadores[i-1] =new Jugador(s);
【讨论】:
以上是关于初学者:空指针异常的主要内容,如果未能解决你的问题,请参考以下文章