Java 将对象数组保存到文本文件

Java 将对象数组保存到文本文件,java,arrays,object,Java,Arrays,Object,我正在尝试将数组对象(房间)保存到.txt文件中。我不太熟悉序列化,但我已经尽可能地使用它将对象写入文件。但是,我每次都会收到以下错误代码: java.io.NotSerializableException: hotelobjects.Room at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeArray(ObjectOutputS

我正在尝试将数组对象(房间)保存到.txt文件中。我不太熟悉序列化,但我已经尽可能地使用它将对象写入文件。但是,我每次都会收到以下错误代码:

java.io.NotSerializableException: hotelobjects.Room
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)
at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348)
at hotelobjects.HotelObjects.storeData(HotelObjects.java:81)
at hotelobjects.HotelObjects.main(HotelObjects.java:50) 
这是主要代码:

public class HotelObjects {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws Exception {
    String command;

    Scanner input = new Scanner(System.in);

    Room[] myHotel = new Room[10];
    for (int x = 0; x < myHotel.length; x++) {
    myHotel[x] = new Room();
    }

    String roomName;
    int roomNum = 0;

    while (roomNum < 11) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Enter command : ");
        command = input.next();
        command = command.toLowerCase();

        if (command.charAt(0) == 'v') {
            viewCustomers(myHotel);
        }

        if (command.charAt(0) == 'a') {
            addCustomers(myHotel);
        }

        if (command.charAt(0) == 'e') {
            emptyRooms(myHotel);
        }

        if (command.charAt(0) == 's') {
            storeData(myHotel);
        }
    }
}

private static void viewCustomers(Room hotelRef []) {
    for (int x = 0; x < 10; x++) {
            System.out.println("room " + x + " occupied by " + hotelRef[x].getName());
        }
}

private static void addCustomers(Room myHotel[]) {
    String roomName;
    int roomNum;
    System.out.println("Enter room number (0-10) or 11 to stop:");
    Scanner input = new Scanner(System.in);
        roomNum = input.nextInt();
        System.out.println("Enter name for room " + roomNum + " :");
        roomName = input.next();
        myHotel[roomNum].setName(roomName);
}

private static void emptyRooms(Room[] myHotel) {
    for (int x = 0; x < 10; x++ )
        if (myHotel[x].getName().equals("e"))System.out.println("room " + x + " is empty");
}

private static void storeData(Room [] myHotel) {
     try{
     FileOutputStream fos= new FileOutputStream("C:\\Users\\Ganz\\Documents\\NetBeansProjects\\HotelObjects\\HotelObject.txt");
     ObjectOutputStream oos= new ObjectOutputStream(fos);
     oos.writeObject(myHotel);
     oos.close();
     fos.close();
   }catch(IOException ioe){
        ioe.printStackTrace();
    }
}
公共类酒店对象{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)引发异常{
字符串命令;
扫描仪输入=新扫描仪(System.in);
房间[]myHotel=新房间[10];
对于(int x=0;x

}答案已经在例外消息中。我缺少hotelobjects.Room的代码,但我敢打赌它没有实现可序列化。解决方案是简单地让空间实现可序列化。

听起来好像您还没有实现可序列化的
接口
您的
房间
类应如下所示:

public class Room implements Serializable{
    public Room(){
        //...
    }
}

你在谷歌上搜索过
NotSerializableException
?这是不言自明的。您的类需要实现java.io.Serializable