JAVA中创建自定义类的对象数组?

时间:2022-04-18 22:18:09
//我创建了一个自定义类的对象数组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>

6 个解决方案

#1


望高手能指点指点,我是JAVA的初学者。
谢谢。
邮箱:xiaohuang1998@sohu.com

#2


你没有初始化数组中的每个对象。

#3


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

#4


谢谢各位提点,不过如何初始化对象啊,
我试了好多方法都不能初始化数组中的各个对象啊。。
高人能否详细解答一下我的问题。。。。

#5


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

#6


我改了代码,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[]对象组要求是全局的。你帮我改下代码,可以吗?我水平实在。。。

#1


望高手能指点指点,我是JAVA的初学者。
谢谢。
邮箱:xiaohuang1998@sohu.com

#2


你没有初始化数组中的每个对象。

#3


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

#4


谢谢各位提点,不过如何初始化对象啊,
我试了好多方法都不能初始化数组中的各个对象啊。。
高人能否详细解答一下我的问题。。。。

#5


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

#6


我改了代码,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[]对象组要求是全局的。你帮我改下代码,可以吗?我水平实在。。。