如何使用分隔符忽略大于1的浮点数?

时间:2015-09-22 00:32:21

标签: java delimiter

所以我正在阅读以下的两列数据txt文件:

20 0.15

30 0.10

40 0.05

50 0.20

60 0.10

70 0.10

80 0.30

我想将第二列放入一个数组({0.15,0.10,0.05,0.2,0.1,0.1,0.3}),但我不知道如何解析大于1的浮点数。我试图将文件作为扫描仪读取并使用分隔符,但我不知道如何获取进行令牌的整数。请帮我。

这是我的参考代码:

for line in myfile:
    location = line.find('FC')
    if location == -1:
        location = line.find('FL')

2 个答案:

答案 0 :(得分:5)

您可以使用" YourString" .split(" regex"); 例如:

String input = "20 0.15";

String[] items = input.split(" "); // split the string whose delimiter is a " "

float floatNum = Float.parseFloat(items[1]); // get the float column and parse

if (floatNum > 1){
    // number is greater than 1
} else {
    // number is less than 1
}

希望这有帮助。

答案 1 :(得分:0)

您只需要一个Scanner。如果您知道每行总是包含一个int和一个double,则可以直接读取数字而不是读取行。

您也不需要读取文件一次以获取行数,再次获取数字等 - 您可以一次性完成。如果您使用ArrayList而不是数组,则无需指定大小 - 它将根据需要增长。

List<Integer> claimSizes = new ArrayList<>();
List<Double> proportionSizes = new ArrayList<>();

while (scanner.hasNext()) {

    claimSizes.add(scanner.nextInt());
    proportionSizes.add(scanner.nextDouble());
}

现在行数为claimSizes.size()(也是proportionSizes.size())。这些元素由claimSizes.get(i)等访问。