将int的多行文件存储到数组中

时间:2018-02-28 16:37:31

标签: java arrays tcp

所以我必须阅读包含整数的多行文本文件。文本文件结构如下所示:

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。任何人都知道导致这个问题的原因是什么?

1 个答案:

答案 0 :(得分:0)

问题正如@Ian正确指出的那样,您过早地关闭了PrintStreamSocketwhile(in.hasNextLine()) { //your logic } in.close(); out.close(); socket.close();

你可以做的是

{{1}}

希望这有帮助。