java为什么我的程序停止运行而不返回错误?
我将声明放在while循环中,程序不会运行,也不会返回任何错误。我怀疑while循环会变成一个无限循环
try
{
while (true)
{
inputStream = new ObjectInputStream (new FileInputStream (fileName));
Ship copyObject = (Ship) inputStream.readObject();
String nameCompany = copyObject.getCompanyName();
if (compName.equalsIgnoreCase(nameCompany)){
listShipName += (copyObject.getShipName() + ", ");
numberOfShip ++;
}
}
}
catch (EOFException e)
{
}
catch (Exception e)
{
e.printStackTrace();
}
但是如果我将输入流的声明放在while循环之外,程序就会成功运行。有人能解释为什么会这样吗
try
{
inputStream = new ObjectInputStream (new FileInputStream (fileName));
}
catch (Exception e)
{
e.printStackTrace();
}
try
{
while (true)
{
Ship copyObject = (Ship) inputStream.readObject();
String nameCompany = copyObject.getCompanyName();
if (compName.equalsIgnoreCase(nameCompany)){
listShipName += (copyObject.getShipName() + ", ");
numberOfShip ++;
}
}
}
catch (EOFException e)
{
}
catch (Exception e)
{
e.printStackTrace();
}
# 1 楼答案
在循环的每一次迭代中,您都会重新打开文件,这意味着您只能从文件中读取第一个对象。但是你一遍又一遍地读同一个物体
除了只打开一次文件外,您还应该在不引发异常的情况下检测文件的结尾。作为一种风格,出现问题时应该抛出异常,而不是理所当然
# 2 楼答案
现在我意识到,在每一次迭代中,我都会重新打开输入流,这样循环就不会到达文件的末尾,它就会变得无限大