所以我必须阅读包含整数的多行文本文件。文本文件结构如下所示:
1 5 99 3 5 6
2 6 93 2 5 12 4 5
22 3 44 5
正如您所看到的,每个整数之间都有一个空格。我的程序想要做的是读取这些整数,将它们存储在数据结构中(我选择了一个数组),然后以某种方式操纵数字(如果数字不是,我必须找到数字下面的最大素数)主要)。
这是我的代码:
private void processRequest() throws Exception {
Scanner in = new Scanner(
new InputStreamReader(socket.getInputStream()));
PrintStream out = new PrintStream(socket.getOutputStream());
while(in.hasNextLine()){
String[] arr = in.nextLine().split(" ");
int[] intarr = new int[arr.length];
for(int i = 0; i <arr.length; i++){
intarr[i] = Integer.parseInt(arr[i]);
if (prim(intarr[i]) == true){
out.println(intarr[i] + " ");
}else{
while (!prim(--intarr[i])){
}
out.println(intarr[i] + " ");
}
}
in.close();
out.close();
socket.close();
}
}
运行此输出时,我的输出一切都适用于文本文件的第一行,但在第一行之后,所有后续行都为空。 例如:
3 7 11 17
null
null
我有另一个类将文本文件的行发送到上面的processRequest类,它正在发送所有具有正确整数的行(我运行了一些测试以确保)。所以在我的processRequest类中发生了一些事情,它导致第1行之后的所有行都为null。任何人都知道导致这个问题的原因是什么?
答案 0 :(得分:0)
问题正如@Ian正确指出的那样,您过早地关闭了PrintStream
,Socket
和while(in.hasNextLine()) {
//your logic
}
in.close();
out.close();
socket.close();
。
你可以做的是
{{1}}
希望这有帮助。