我创建一个线程(服务器)从输入(System.in)读取字符串并输出到客户端,当我尝试关闭流 我得到这个错误:当我调用此函数时无法访问的代码closeStream()这里的代码请帮助:
import java.io.*;
public class ThreadWrite extends Thread{
private PrintWriter output;
private BufferedReader inputServer;
private final boolean test=true;
public ThreadWrite(PrintWriter out) {
output = out;
inputServer = new BufferedReader(new InputStreamReader(System.in));
}
public void run(){
String send;
while(test){
System.out.print("Server:");
try {
send = inputServer.readLine();
output.println(send);
} catch (IOException e) {
e.printStackTrace();
}
}
closeStream();
}
public void closeStream() throws Exception{
inputServer.close();
output.close();
}
}
需要你的帮助
答案 0 :(得分:2)
while(test)
总是返回true,因此无法访问while循环(closeStream();
)后面的语句。
答案 1 :(得分:1)
您永远不会将boolean test
更改为false
,而您不能(自最终确定)因此您永远不会从while
循环移出。
Java
答案 2 :(得分:1)
您将test
声明为final
,因此无法更改其值并保持true
。
所以在while
条件内只剩下true
并且没有办法,那就是结束(除了异常等)。因此无法到达 while
之后的行。
答案 3 :(得分:0)
测试是一个真实的最终变量。你永远不会离开
while(test)
环。
答案 4 :(得分:0)
您已在closeStream()
之外提及while loop
且条件始终为true且您的while循环中没有任何语句可以将其分解并达到closeStream()
方法。