将int的多行文件存储到数组中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将int的多行文件存储到数组中相关的知识,希望对你有一定的参考价值。
所以我必须阅读包含整数的多行文本文件。文本文件结构如下所示:
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。任何人都知道导致这个问题的原因是什么?
答案
这个问题,正如@Ian所指出的那样,是你过早关闭你的InputStreamReader
,PrintStream
和Socket
。
你可以做的是
while(in.hasNextLine()) {
//your logic
}
in.close();
out.close();
socket.close();
希望这可以帮助。
以上是关于将int的多行文件存储到数组中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?