尽管它应该结束,但是没有进入下一行

时间:2013-05-21 21:55:42

标签: java sockets do-while

我最近在一个s​​ocket项目上。当我调试我的代码时,我发现了一个问题,但我找不到原因,下面是我的代码

 // some code that open a socket connection and put inputstream into a BufferedReader called 'in'

 String input;
 input= (String)in.readLine();
do{

    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

正如您所看到的,上面的代码创建了一个无限循环,当我从服务器端发送一个字符串时,它会将println保留为该字符串。

如果我这样做,如下

 String input;

do{
    input= (String)in.readLine();
    System.out.println(input);

}while(input!=null);

out.close();
in.close();
Socket.close();

问题解决了,效果很好。每次我从服务器站点发送一个字符串,它只打印一次。但是它没有退出循环并转到下一行来关闭套接字连接。

所以这是我的问题。如果我把它放在do while循环中。如果循环结束并转到下一行然后断开连接?任何人都可以解释为什么while循环只执行一次而没有进入下一行?

最佳

1 个答案:

答案 0 :(得分:1)

如果input= (String)in.readLine();位于do-while循环中,当您在null中读取时,它将打印null然后退出循环。然后,out.close();in.close();Socket.close();将会执行。