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

问题描述 投票:0回答:1

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

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

java arrays tcp
1个回答
0
投票

这个问题,正如@Ian所指出的那样,是你过早关闭你的InputStreamReaderPrintStreamSocket

你可以做的是

while(in.hasNextLine()) {
    //your logic
}
in.close();
out.close();
socket.close();

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.