//我创建了一个自定义类的对象数组z1[],一旦我试图用输入的L,R,C修改对象的属性时,
//就会抛出异常。
//为什么??//Convert.java,主类。import java.awt.*;
import java.io.*;
import javax.swing.*;
import java.awt.event.*;public class Convert extends JApplet implements ActionListener
{
private JLabel clbl,llbl,rlbl,ulbl,ilbl,res;
private JTextField ctxt,ltxt,rtxt,utxt,itxt,result;
private Container c;
private FlowLayout layout;
private JTextArea area;
private JPanel npnl,spnl;
private JButton z1btn,z2btn,conbtn;
int I=0;
double U=0.0;

  //Component xx=new Component();
Component[] z1=new Component[100];
//Component[] z2=new Component[100];


public void init()
{

layout=new FlowLayout();

c=getContentPane();
c.setLayout(layout);

ilbl=new JLabel("I=");
ulbl=new JLabel("U=");
clbl=new JLabel("C=");
llbl=new JLabel("L=");
rlbl=new JLabel("R=");
res=new JLabel("Result=");

itxt=new JTextField(15);
utxt=new JTextField(15);
ctxt=new JTextField(15);
ltxt=new JTextField(15);
rtxt=new JTextField(15);
result=new JTextField(15);

area=new JTextArea(20,40);
area.append("please enter I,U: ");

z1btn=new JButton("Add to z1[ ]");
z2btn=new JButton("Add to z2[ ]");
conbtn=new JButton("convert");

//ScrollPane pn=new ScrollPane();
//area.add(pn);

c.add(ilbl);
itxt.addActionListener(this);
c.add(itxt);
c.add(ulbl);
utxt.addActionListener(this);
c.add(utxt);
c.add(clbl);
c.add(ctxt);
c.add(llbl);
c.add(ltxt);
c.add(rlbl);
c.add(rtxt);
z1btn.addActionListener(this);
c.add(z1btn);
z2btn.addActionListener(this);
c.add(z2btn);
c.add(area);
c.add(conbtn);
c.add(res);
c.add(result);


}

public void actionPerformed(ActionEvent e)
{
if(e.getSource()==itxt)
{
I=Integer.parseInt(itxt.getText()); 
area.append("I="+I);
}

else if(e.getSource()==utxt)
{
U=Double.parseDouble(utxt.getText());
area.append("\nU="+U);
}

else if(e.getSource()==z1btn)
{
int j=0;
double rt=Double.parseDouble(rtxt.getText());
double lt=Double.parseDouble(ltxt.getText());
double ct=Double.parseDouble(ctxt.getText());

try{
z1[j].setComponent(rt,lt,ct);
j++;
area.append(z1[j].toString());
//问题就出在这里,一旦我试图用输入的L,R,C创建对象时,
                  //就会抛出异常。

}
catch(Exception exc)
{
JOptionPane.showMessageDialog(null,exc.toString());
}
}
}

}
//Component类,(自定义的类)public class  Component
{
final double j=1.3,w=2;

public double r,l,c;

public Component()
{
this.setComponent(9999,9999,9999);
}

public void setComponent(double a,double b,double d)
{
r=a;
l=b;
c=d;
}

double Resist()
{
return(r+j*w*l-j*w*c);
}

double calculate1(Component z1,Component z2)
{
return (z1.Resist()+z2.Resist());
}

double calculate2(Component z1,Component z2,Component z3)
{
double temp=(calculate1(z2,z3)*z1.Resist())/(z1.Resist()+calculate1(z2,z3));
return (temp);
}
 
}
//下面是自己定义的HTTP文件
<html>
<body>
<applet height="550" width="456" code="Convert.class">
</applet>
</body>
</html>

解决方案 »

  1.   

    望高手能指点指点,我是JAVA的初学者。
    谢谢。
    邮箱:[email protected]
      

  2.   

    Component[] z1=new Component[100];只是初始化了数组而已,但没有初始化对象
    Component[i]=new ...
    不然直接对Component[i]进行操作,就会抛出NullPointerException了
      

  3.   

    z1[i]使用之前先new一下不就好了,不然是null
      

  4.   

    我改了代码,if(e.getSource()==itxt)
    {
    I=Integer.parseInt(itxt.getText()); 
    area.append("I="+I);
    for(int xx=1;xx<I;xx++) 
    {
      z1[xx]=new Component();


    }
    还是会抛出异常啊?我定义的z1[]对象组要求是全局的。你帮我改下代码,可以吗?我水平实在