3

我正在使用 Sockets 编写 Java 中的服务器客户端程序。

我要求用户输入一系列整数,将它们添加到 an 中ArrayList,然后使用 .将它们作为 Object 发送到服务器ObjectOutputStream。服务器然后接收对象。

我将对象解析为一个ArrayList,然后我使用一种方法来计算整数的最大数量,并将其作为字符串返回给客户端。

BufferedReader用于用户输入

从某种意义上说,我需要的是关于如何:

检查用户输入,如果不是“ Ok”或按Enter

用户应该能够添加由空格分隔的数字。

如果然后他按 Enter 则应该退出循环并将数字添加到数组中

我到目前为止:

 BufferedReader integers = new BufferedReader(new InputStreamReader(System.in));
                        //  send int 1, for the Max number option
                        pw.println(option);
                        System.out.println(br.readLine());
                        String x = integers.readLine();
                        if(integers!=null){

                            readInt(integers);

                    }


                        objectOut = new ObjectOutputStream(client.getOutputStream());
                        objectOut.writeObject(maxNum);
                        objectOut.flush();
                        System.out.println(br.readLine());
                        objectOut.close();
                        break;

读入方法:

public static int readInt(BufferedReader stdIn) {
        while (true) {
            try {
                String line = stdIn.readLine();
                int value = Integer.parseInt(line);
                return value;
            } catch (java.lang.NumberFormatException e) {
                ;
            } catch (IOException e) {
                ;
            }
        }
    }
4

2 回答 2

2

你可以更好地处理这个问题ScannerBufferedReader相当陈旧且已弃用。

List<Integer> seriesOfInt = new ArrayList<>();

while (scanner.hasNextInt()) {
    seriesOfInt.add(scanner.nextInt());
}

或者,如果用户在一行中输入所有这些数字,它们之间有一些分隔符,比如空格 ( ),您可以拆分输入并存储在 ArrayList 中。

if (scanner.hasNext()) {
    List<String> seriesOfIntString = Arrays.asList(scanner.next().split(" "));
}
于 2012-10-09T09:55:03.723 回答
1

不确定我是否理解你的问题。你在寻找类似split()的东西吗?使用此方法,您可以按任何字符拆分输入,在您的情况下" " ,它将返回一个字符串数组,然后您可以将其添加到您的 ArrayList 中。

于 2012-10-09T09:55:35.297 回答