Java 使用EOFEException结束循环
我将班级学生的对象保存在名为file.txt的文件中 我不知道文件中有多少学生对象。如何使用EOFEException结束循环。 我不能纠正这个例外,有什么帮助吗Java 使用EOFEException结束循环,java,Java,我将班级学生的对象保存在名为file.txt的文件中 我不知道文件中有多少学生对象。如何使用EOFEException结束循环。 我不能纠正这个例外,有什么帮助吗 students class class students implements java.io.Serializable { String Frist; String Second; String Phone; String CityAddress; String CityStreet; students(){} students
students class
class students implements java.io.Serializable {
String Frist;
String Second;
String Phone;
String CityAddress;
String CityStreet;
students(){}
students(String s1,String s2,String s3,String s4,String s5){
Frist=s1;
Second=s2;
Phone=s3;
CityAddress=s4;
CityStreet=s5;
}
}
this i try in main but give exception
public static void main(String[] args) throws Exception {
// TODO code application logic here
students s;
ObjectInputStream input =new ObjectInputStream(new FileInputStream("file.txt"));
while(true)
{
try
{
s=(students)(input.readObject());
System.out.print(s.Frist +" ");
System.out.print(s.Second+" ");
System.out.print(s.Phone+" ");
System.out.print(s.CityAddress+" ");
System.out.println(s.CityStreet);
}catch(EOFException ex)
{
break;
}
}
input.close();
}
以下是异常堆栈跟踪:
Exception in thread "main" java.io.InvalidClassException: sheet2_7.students; local class incompatible:
stream classdesc serialVersionUID = -4264328281487890061,
local class serialVersionUID = 397805898333518525
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:621)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1623)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at sheet2_7.Sheet2_7.main(Sheet2_7.java:81)
如何使用EOFEException结束循环
你写的应该有用。catch块中的中断
应终止循环
或者,将循环移动到try块内。当抛出异常时,您将在执行catch块之前终止循环
这是我主要尝试的,但有例外
我不能纠正这个例外
您是说在EOFEException
上出现编译错误吗?如果是,请检查是否已导入
否则,您需要向我们显示异常的完整stacktrace。。。包括异常名称和消息
更新
异常stacktrace告诉我串行对象的序列化签名与代码中类的签名不匹配。这很可能意味着您在创建序列化对象后更改了类
这是在数据持久性方案中使用Java序列化的问题之一。(见附件)
如果不知道您是如何达到这种状态的,就无法给出解决方案。首先,您需要在阅读后为学生分配空间。
其次,在处理下一行之前,可以使用Scanner类检查下一行是否有任何内容 这是错误的/没有帮助的。1) 如果他只是打印出这样的信息,他不需要分配空间。2) 扫描仪用于文本输入。他正在尝试读取序列化对象。表示是二进制的,不是文本。我看不懂图像。它太小了,您似乎已经切掉了消息的一些文本。将stacktrace剪切并粘贴为文本。线程“main”java.io.InvalidClassException中的异常:sheet2_7.students;本地类不兼容:java.io.ObjectInputStream.readClassDesc的java.io.ObjectInputStream.readClassDesc的java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:621)处的stream classdesc serialVersionUID=-4264328281487890061,本地类serialVersionUID=39780589333518525(ObjectInputStream.java:1518)在java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)在java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)在sheet2_7.main(sheet2_7.java:81)java结果:1高…进入问题。。。