3

ソケットを使用して、Java でサーバー クライアント プログラムに取り組んでいます。

ユーザーに一連の整数を入力して に追加し、ArrayListを使用してオブジェクトとしてサーバーに送信するように依頼します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;

readIn メソッド:

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());
}

または、ユーザーが空白 ( ) などの区切り文字を使用してこれらすべての数値を 1 行に入力している場合は、入力を分割して 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 に答える