import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
public class Input extends Frame implements ActionListener
{
String a,b,c,d,e;
Label l1;TextField tf1;
Label l2;TextField tf2;
Label l3;TextField tf3;
Label l4;TextField tf4;
Label l5;TextField tf5;
Button bu;
Input()
{
l1=new Label("楼号");
add(l1);
TextField tf1=new TextField();
add(tf1);
l2=new Label("单元号");
add(l2);
TextField tf2=new TextField();
add(tf2);
l3=new Label("门牌号");
add(l3);
TextField tf3=new TextField();
add(tf3);
l4=new Label("业主姓名");
add(l4);
TextField tf4=new TextField();
add(tf4);
l5=new Label("居住面积");
add(l5);
TextField tf5=new TextField();
add(tf5);
bu=new Button("录入");这里点击录入后失败,为什么?
bu.addActionListener(this);
add(bu);
addWindowListener(
new WindowAdapter()
 {
public void windowClosing(WindowEvent e)
{
dispose();
System.exit(0);
}
 }
 );
setSize(500,600);
setVisible(true);
setLayout(new GridLayout(6,1));
pack();
}
public void actionPerformed(ActionEvent act)
{
if(act.getSource()==bu)
a=tf1.getText();
b=tf2.getText();
c=tf3.getText();
d=tf4.getText();
e=tf5.getText();
run();
}
public void run()
{
int i=0;
User u[]=new User[100];
try
{
FileInputStream fis=new FileInputStream("./1.txt");
ObjectInputStream ois=new ObjectInputStream(fis);
while(ois.readObject()!=null)
 {
u[i]=(User)ois.readObject();
i++;
 }
ois.close();
u[i]=new User(a,b,c,d,e);
FileOutputStream fos=new  FileOutputStream("1.txt");
ObjectOutputStream oos=new ObjectOutputStream(fos);
for(int j=0;j<=i;j++)
   {
oos.writeObject(u[j]);
   }
oos.close();
}
catch(Exception e)
   {
System.out.println("出现异常");
   }
}
public static void main(String[] args)
{
Input in=new Input();
}
}
class User implements Serializable
{
String a1,b1,c1,d1,e1;
 User(String a2,String b2,String c2,String d2,String e2)
{
a1=a2;
b1=b2;
c1=c2;
d1=d2;
e1=e2;
}
public String toString()
 {
String s="楼号"+a1+"单元号"+b1+"门牌号"+c1+"业主姓名"+d1+"面积"+e1;
return s;
 }
}在线等待回答!!!!

解决方案 »

  1.   

    public void run() 

    int i=0; 
    User u[]=new User[100]; 
    try 

    FileInputStream fis=new FileInputStream("./1.txt"); 
    ObjectInputStream ois=new ObjectInputStream(fis); 
    while(ois.readObject()!=null) 

    u[i]=(User)ois.readObject(); 
    i++; 

    ois.close(); 
    u[i]=new User(a,b,c,d,e); 
    FileOutputStream fos=new  FileOutputStream("1.txt"); 
    ObjectOutputStream oos=new ObjectOutputStream(fos); 
    for(int j=0;j <=i;j++) 
      { 
    oos.writeObject(u[j]); 
      } 
    oos.close(); 

    catch(Exception e) 
      { 
    System.out.println("出现异常"); 
      } 
    } 为什么要先把内容都读出来啊?直接写进去不就可以了吗?
      

  2.   

    读出来是因为 我以后如果修改的话,可以再增加些代码直接操作。主要问题是我的代码为什么在编译通过后,点击“录入”程序却执行不了。C:\Documents and Settings\Administrator>javac Input.javaC:\Documents and Settings\Administrator>java Input
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at Input.actionPerformed(Input.java:57)
            at java.awt.Button.processActionEvent(Unknown Source)
            at java.awt.Button.processEvent(Unknown Source)
            at java.awt.Component.dispatchEventImpl(Unknown Source)
            at java.awt.Component.dispatchEvent(Unknown Source)
            at java.awt.EventQueue.dispatchEvent(Unknown Source)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
            at java.awt.EventDispatchThread.run(Unknown Source)
    就是这个错误, 你看看 ,谢谢啦
      

  3.   

    FileInputStream fis=new FileInputStream("./1.txt"); 与
    FileOutputStream fos=new  FileOutputStream("1.txt"); 两个文件 路径也不一样
      

  4.   


    Input() 

    l1=new Label("楼号"); 
    add(l1); 
    TextField tf1=new TextField(); //去掉前面的TextField,否则就是重新定义变量了,而不是成员属性的那个
    add(tf1); 
    l2=new Label("单元号"); 
    add(l2); 
    TextField tf2=new TextField(); //去掉前面的TextField,否则就是重新定义变量了,而不是成员属性的那个
    add(tf2); 
    l3=new Label("门牌号"); 
    add(l3); 
    TextField tf3=new TextField(); //去掉前面的TextField,否则就是重新定义变量了,而不是成员属性的那个
    add(tf3); 
    l4=new Label("业主姓名"); 
    add(l4); 
    TextField tf4=new TextField(); //去掉前面的TextField,否则就是重新定义变量了,而不是成员属性的那个
    add(tf4); 
    l5=new Label("居住面积"); 
    add(l5); 
    TextField tf5=new TextField(); 
    add(tf5); 
    bu=new Button("录入"); 
    bu.addActionListener(this); 
    add(bu); 
    addWindowListener( 
    new WindowAdapter() 

    public void windowClosing(WindowEvent e) 

    dispose(); 
    System.exit(0); 


    ); 
    setSize(500,600); 
    setVisible(true); 
    setLayout(new GridLayout(6,1)); 
    pack(); 

      

  5.   


    我把读取的那一块去掉了.你自己试试吧,路径也换到C盘下了import java.awt.Button;
    import java.awt.Frame;
    import java.awt.GridLayout;
    import java.awt.Label;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    public class Input extends Frame implements ActionListener 

    String a,b,c,d,e; 
    Label l1;
    TextField tf1; 
    Label l2;
    TextField tf2; 
    Label l3;
    TextField tf3; 
    Label l4;
    TextField tf4; 
    Label l5;
    TextField tf5; 
    Button bu; 
    Input() 

    l1=new Label("楼号"); 
    add(l1); 
     tf1=new TextField(); 
    add(tf1); 
    l2=new Label("单元号"); 
    add(l2); 
     tf2=new TextField(); 
    add(tf2); 
    l3=new Label("门牌号"); 
    add(l3); 
     tf3=new TextField(); 
    add(tf3); 
    l4=new Label("业主姓名"); 
    add(l4); 
     tf4=new TextField(); 
    add(tf4); 
    l5=new Label("居住面积"); 
    add(l5); 
     tf5=new TextField(); 
    add(tf5); 
    bu=new Button("录入"); 
    bu.addActionListener(this); 
    add(bu); 
    addWindowListener( 
    new WindowAdapter() 

    public void windowClosing(WindowEvent e) 

    dispose(); 
    System.exit(0); 


    ); 
    setSize(500,600); 
    setVisible(true); 
    setLayout(new GridLayout(6,1)); 
    pack(); 

    public void actionPerformed(ActionEvent act) 

    if(act.getSource()==bu) 
    a=tf1.getText(); 
    b=tf2.getText(); 
    c=tf3.getText(); 
    d=tf4.getText(); 
    e=tf5.getText(); 
    run(); 

    public void run() 

    int i=0; 
    User u[]=new User[100]; 
    try 

    File f = new File("C:/1.txt");
    if(!f.exists())
    {
    f.createNewFile();
    }
    // FileInputStream fis=new FileInputStream("C:/1.txt"); 
    // ObjectInputStream ois=new ObjectInputStream(fis); 
    // while(ois.readObject()!=null) 
    // { 
    // u[i]=(User)ois.readObject(); 
    // System.out.println(u[i]);
    // i++; 
    // } 
    // ois.close(); 
    // u[i]=new User(a,b,c,d,e); 
    User t1 = new User(a,b,c,d,e);;
    FileOutputStream fos=new  FileOutputStream("C:/1.txt"); 
    ObjectOutputStream oos=new ObjectOutputStream(fos); 
    for(int j=0;j <=i;j++) 

    oos.writeObject(t1); 

    oos.close(); 

    catch(Exception e) 

    e.printStackTrace();
    System.out.println("出现异常"); 


    public static void main(String[] args) 

    Input in=new Input(); 


    class User implements Serializable 


    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    String a1,b1,c1,d1,e1; 
    User(String a2,String b2,String c2,String d2,String e2) 

    a1=a2; 
    b1=b2; 
    c1=c2; 
    d1=d2; 
    e1=e2; 

    public String toString() 

    String s="楼号"+a1+"单元号"+b1+"门牌号"+c1+"业主姓名"+d1+"面积"+e1; 
    return s;