4

Java で以下のように 1 行から一連の数値を読み取ることができます。

1   80,982  163,8164                    170,2620    

したがって、最終的には結果配列が必要です[1, 80, 982, 163, 8164, 170, 2620]

スキャナーの使用を考えていますが、うまく実装する方法がわかりません。ヒントを教えてください。

読んでくれてありがとう!

4

8 に答える 8

6

それが私だったら、 を使用して 1 行を読みBufferedReader、次に単純に使用します

String[] values = line.split("[, ]");

私は通常、Scanner乱雑でやり過ぎだと思います。

于 2013-03-12T03:15:38.493 に答える
5

はい、 Scanner クラスはこれでうまく機能します。

public static void main(String[] args) throws Exception {
    Scanner s = new Scanner(strOrFile).useDelimiter(",| ");
    List<Integer> myList = new ArrayList<Integer>();
    while (s.hasNext()) {
       myList.add(s.nextInt());
    }
}

ファイルから読み取る場合は特にうまく機能します。(あなたのために仕事を減らします。)

于 2013-03-12T03:15:50.353 に答える
3

スキャナーは問題ありません。目的の区切り文字パターンを設定するだけです。これを参照してください。

于 2013-03-12T03:15:04.337 に答える
2

String[] が必要なので、最善の解決策は String.split です

String[] s = str.split("[ ,]+");
于 2013-03-12T04:07:25.583 に答える
2

これを試して:

public static void main(String[] args) {
    String str = "1 80,982 163,8164 170,2620";
    String[] s = str.split(" |,");
    for(String ss:s)
        System.out.println(ss);
}
于 2013-03-12T03:18:08.843 に答える
2

以下の正規表現で文字列を分割します。

 String input = "1   80,982  163,8164                    170,2620 "; 
        String[] values = input.split("\\s*(,|\\s)\\s*");
        for(String val: values)
        {
            System.out.println(val);

        }

以下の条件に一致します。

  1. ゼロ以上の空白(,|\\s)。区切り文字が複数ある場合は、 のように括弧で囲むことができます(&|,|@|\\s)
  2. コンマと空白。

ここでフィドルを確認してください。

Java プログラム

于 2013-03-12T04:21:49.553 に答える
1

いくつかのコンマ、スペース、およびスペースを含むコンマを含む単純な入力ファイルの場合、Rais の正規表現と Evgeniy の正規表現は両方とも分割で機能しました。後者の場合、+ 記号が重要です。このデータでは、他のオプションはどれも機能しませんでした: 1.0 2.0 3.0 4.0 5.0,6.0 7.0 8.0 9.0 10.0, 11.0 12.0

于 2014-02-06T21:36:23.960 に答える