基本的に1行の文字列を返すプログラムが1つありますが(これは正常に機能します)、複数行になることもあり、問題が発生します。基本的に、2番目のプログラムに送信されるオプションをユーザーに選択させ、そのオプションに基づいて特定の文字列を返します。ただし、ユーザー選択をループの外に置くと、返される文字列が複数行の場合は正常に機能しますが、ユーザーが終了することを選択するまで、オプションメニューでユーザーにプロンプトを表示し続ける必要があります。そのためのコードは次のとおりです。
System.out.print("Enter your choice: ");
fromClient = stdIn.readLine().trim();
while ((fromServer = input.readLine()) != null)
{
System.out.println("Server: " + fromServer);
if (fromServer.equals("Bye"))
break;
if(fromClient.equals("1"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("2"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("3"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
}
if(fromClient.equals("4"))
{
System.out.println("Client: " + fromClient);
output.println(fromClient);
break;
}
}
これは、前述のとおり、複数行の文字列を正常に返しますが、オプションの選択をユーザーに求めるプロンプトは表示されなくなります。ユーザー選択をループ内に移動し、複数行の文字列が返されると、1行を出力し、ユーザーに選択を求め、2行目を印刷し、ユーザーに選択を求め、3行を印刷し、ユーザーに選択を求めます...