在一行中扫描包含多个值的.text文件。找到正确的价值

时间:2013-02-14 03:58:45

标签: java android

我有一个.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文件中有一百万个格式化。

摘要:UserNumber - >从左侧找到最接近的匹配 - >将右侧编号存储到int。 关于如何管理这个的任何想法?

2 个答案:

答案 0 :(得分:0)

如果分隔符的数量始终是常量并且list总是排序,则可以使用String.split(),它将返回长度为5的String []。[0]和[1]值在解析为整数可以帮助您比较数字并找到最接近的匹配。 [3]和[4]值可以为您提供所需的输出。

我写了两种方法。读完该行后,将字符串相应地传递给这些方法

//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]);
}

这里的问题是导致程序有缺陷的错误的行/分隔符模式。但如果你确定不会发生,那就瞧!

答案 1 :(得分: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

请注意,括号组之间有一个空格。