我将声明放在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();
}
最佳答案
您将在循环的每次迭代中重新打开文件,这意味着您只读取文件中的第一个对象。但你一遍又一遍地阅读同一个对象。
除了仅打开文件一次之外,您确实应该尝试检测文件末尾而不引发异常。作为一种风格问题,当出现问题时应该抛出异常,而不是理所当然的。
关于java - 为什么我的程序停止运行并且不返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26832777/