-1

バッファリングされた文字列リーダーを使用して文字列にロードする .txt ファイルを取得しました。String 内のデータはこの形式です。

20 000  5 000
50 000  6 000
60 000  7 000
80 000  8 000
90 000  9 000

これらの数字を調べて、正しい数字を見つける必要があります。数値を持つint変数があります。int 変数が「24000」であるとしましょう。その場合、リストからの正しい答えは 20 000 になります。これが最も近い一致です。次に、20 000 (5 000) の後の数値を抽出し、別の int に書き込む必要があります。このような .txt ファイルにフォーマットされた数値が 100 万個あるため、数値のフォーマットを変更することはできません。

概要 : UserNumber -> 左側から最も近い一致を検索 -> 右側の番号を int に格納します。これをどのように管理できるかについてのアイデアはありますか?

4

2 に答える 2

0

区切り文字の数が常に一定で、リストが常にソートされている場合は、長さ 5 の String[] を返す String.split() を使用できます。[0] と [1] の値を整数に解析すると役立ちます。数字を比較して、最も近い一致を見つけます。[3] と [4] の値で、目的の出力が得られます。

私は2つの方法を書きました。行を読んだら、それに応じて文字列をこれらのメソッドに渡します

//to get the first part of the string as number
private static int checkedVal(String readString) {
    String[] splitString = readString.split(" ");
    return Integer.parseInt(splitString[0] + splitString[1]);
}
//to get the last part of the string as number
private static int correspondingVal(String readString) {
    String[] splitString = readString.split(" ");
    return Integer.parseInt(splitString[3] + splitString[4]);
}

ここでの問題は、行/区切り文字のパターンが間違っているため、プログラムに欠陥がある可能性があります。しかし、それが起こらないと確信しているなら、ほら!

于 2013-02-14T05:21:26.917 に答える
0

これにより、各行の数値が得られます。

String[] parts = null;
Long first = null;
Long second = null;

// loop begins
parts = line.split("\\s{1,2}");
first = Long.parseLong(parts[0] + parts[1]);
second = Long.parseLong(parts[2] + parts[3]);

// logic

// loop ends

括弧のセットの間に単一のスペースがあることに注意してください。

于 2013-02-14T07:17:28.593 に答える