所以我正在阅读以下的两列数据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')
答案 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)
等访问。