我正在我的机器上运行一个简单的小程序。请注意,执行小程序时,尝试运行小程序时会出现"空指针异常"错误。显示以下代码
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.math.*;
<applet code="s09_04" width=300 height=50>
</applet>
public class s09_04 extends Applet
{
CardLayout c1;
Panel p;
Label l1;
Label l2;
Label l3;
Label l4;
TextField t1;
TextField t2;
TextField t3;
TextField t4;
public void start()
{
}
public void init()
{
c1 = new CardLayout();
l1 = new Label("Enter Name :");
l2 = new Label("Enter Place :");
l3 = new Label("Address :");
l4 = new Label("Pin :670571 ");
t1 = new TextField(20);
p = new Panel();
p.setLayout(c1);
add(l1);
add(t1);
add(l2);
add(t2);
add(l3);
add(t3);
add(l4);
add(t4);
}
public void paint(Graphics g)
{
}
}
使用的命令是
爪哇s09_04.java
和
小程序查看器s09_04.java。
端子输出:
java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:1037)
at java.awt.Container.add(Container.java:373)
at s09_04.init(s09_04.java:32)
at java.lang.Thread.run(Thread.java:701)
我的问题是小程序无法启动的最可能原因是什么?何时发生空指针异常???导致空指针异常的原因是什么?以及我应该在我的代码中更改什么,以便代码顺利运行而没有任何错误。对代码的任何建议/更改将不胜感激。请注意,我正在 linux 中运行此代码,谢谢...
因为TextField t2, t3 and t4;
没有初始化。 解析方式
t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);
像 T1
程序无法启动的最可能原因?
Applet
的文档说要向Container
添加一个组件,该组件应该被初始化。
在这里,在代码中,t2, t3, t4
没有初始化,这会引发NullPointerException
何时发生空指针异常???
这是一个非常大的话题,简单地说,
当您尝试访问未初始化的对象时,它会抛出 NPE(参见示例)
Object o = null;
// o is not initialised.
o.wait();
我应该在我的代码中更改什么,以便代码顺利运行而没有任何错误
初始化您尝试添加到小程序的所有组件。
t2=new TextField(20);
t3=new TextField(20);
t4=new TextField(20);
您声明文本字段TextField t2;TextField t3;TextField t4;
但不初始化init()
初始化t2,t3,t4
。您正在添加add(t2);add(t3);add(t4); //Here The Exception
t2=new TextField(20);
t3=new TextField(20);
t3=new TextField(20);
但是如果你不初始化文本字段意味着不给它任何空间,它怎么能存储数据呢?
所以试试这个。
t2=new TextField(size);
t3=new TextField(size);
t3=new TextField(size);
它会有所帮助。