3

数値のテキスト ファイルを double 配列として読み込もうとしていますが、さまざまな方法を試した後 (通常は入力形式の例外が発生します)、読み込もうとしているテキスト ファイルが区切り記号と矛盾しているという結論に達しました。

テキスト形式の大部分は「0.000,0.000」の形式であるため、スキャナーと useDelimiter(",") を使用して各値を読み取りました。

ただし、一部のフォーマットが「0.000 0.000」の形式であることが判明しました (これは数字の大きなファイルです) (行末にあると思います)。これはもちろん入力フォーマットの例外を生成します。

これは本当に未解決の質問です。私はかなり基本的な Java プログラマーなので、これを実行するための提案や方法があるかどうかを確認したいと思います。Scanner はこれを行う正しいクラスですか?

お時間をいただきありがとうございます!

4

3 に答える 3

2

ファイルを1行ずつテキストとして読み取ります。次に、行をパーツに分割します。

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

次に、パーツを繰り返し処理して、Double.parseDouble()各パーツを呼び出します。

于 2013-03-21T13:01:39.160 に答える
1

Scanner では、任意の Java Regex パターンを区切り文字として機能させることができます。次のようにすると、任意の数の区切り記号を使用できるようになります。

scanner.setDelimiter("[,\\s]");  // Will match commas and whitespace
于 2013-03-21T13:06:32.727 に答える
0

別の回答にするのではなく、コメントしたいのですが、評判が低すぎます。すみません、アレックス。

あなたは、 2 つの異なる区切り文字を 1 つの区切り文字として組み合わせるのではなく、異なるインスタンスで使用する 2 つの異なる区切り文字があると述べました。垂直バーは、正規表現の論理 OR として使用できます。

scanner.setDelimiter("[,|\\s]"); //Will match commas or whitespace as appropriate

1行ずつ:

String[] parts = line.split("[,|\\s]"); 
于 2013-03-21T13:10:36.590 に答える