我有以下功能。我希望循环继续,直到消息等于"您已成功登录!"。但是当用户输入错误的输入(无效的用户名或密码)时,由于EOFException
,循环无限循环。我怎么解决这个问题?
谢谢。
private void processConnection() throws IOException
{
boolean eofReached = false;
String message;
do
{
try
{
message = (String)input.readObject();
if(message.equals("You have successfully logged in!"))
{
displayMessage(String.format("\n%s ", message));
logged = true;
prepareUI();
}
else
{
displayMessage(String.format("\n%s %s", message, "\nTry again!") );
}
}
catch (ClassNotFoundException | EOFException ex)
{
System.out.printf("\nend of registering");
// Logger.getLogger(ClientJFrame.class.getName()).log(Level.SEVERE, null, ex);
//eofReached = true;
}
cout("registering");
} while(!logged && !eofReached);
}
答案 0 :(得分:0)
在您的代码示例中,您似乎拥有了所需的一切。只需取消注释您设置eofReached
的行。
答案 1 :(得分:0)
我发现了自己的错误。问题是服务器中没有这样的相应循环来回答所有请求。这就是我获得例外的原因。