文本文件如下所示:
数据,数据,数据,数据
数据,数据,数据,数据
数据是数字。 4个数字用逗号分隔,约2000行。但是我一次只需要使用20行。起始线需要按其编号选择,然后再增加19条线。
这些数据需要放入唯一命名的变量(float)中,以便我可以对它们进行数学运算。所以可以这样命名:
DataOne1 DataOne2 DataOne3 DataOne4
DataTwo1 DataTwo2 DataTwo3 DataTwo4
这样我就可以像DataTwo1 - DataOne3那样进行数学运算。这些变量当然总是被命名为相同但后来我可以通过选择新行来更改基础数据。
对不起,这是一个初学者问题,但我完全无法从不同的解决方案中整理出来以获得我的确切解决方案。
所以我的问题是我该怎么做?
答案 0 :(得分:5)
1。您可以使用Scanner
方法nextLine(
)阅读整行。
2. 然后使用split()
方法(我假设数据用(“,”)逗号分隔),以获取该行上的所有4个数据。
<强>例如强>
String[] s = strLine.split(",");
3。考虑制作一个{strong> ArrayList
Float
,然后将String[]
数组中的每个项目转换为Float
项在ArrayList
中,使用 Float.parseFloat()
ArrayList<Float> fArr = new ArrayList<Float>();
for (String temp : s){
fArr.add(Float.parseFloat(temp));
}
4. 然后做你需要的任何计算。
答案 1 :(得分:0)
为了得到你想要的东西,你需要做以下步骤:
1。使用BufferedReader
:
BufferedReader br = new BufferedReader(new FileReader(filename));
2。到达起跑线:
for (int i = 0; i < startLine; i++) {
line = br.readLine();
}
3. 处理您需要的20行,将数字存储在ArrayList
<Double>
for (int i = startLine; i < startLine + 20; i++) {
line = br.readLine();
// Split the lines using comma as delimiter
String[] numberStrings = line.split(",");
ArrayList<Double> numbers= new ArrayList<Double>();
for(String numberString : numberStrings) {
Double number = Double.valueOf(numberString);
numbers.add(number);
}
// Do calculations with them
}
答案 2 :(得分:0)
这是代码。对于每一行,我将值存储在数组中。所以你的DataOne1将在cols0 [0]中,DataTwo1将在cols0 [1]中,DataTwo1将在cols1 [0]中,DataTwo2将在cols1 [1]中,因此也是如此。 你可以很好地使用二维数组来实现这个目的,但为了保持简单,我选择了这种方法。
try {
BufferedReader br = new BufferedReader(new FileReader("fileName"));
String line;
float[] col0 = new float[20];
float[] col1 = new float[20];
float[] col2 = new float[20];
float[] col3 = new float[20];
for (int i = 0; i < 20; i++) {
while((line = br.readLine()) != null) {
// Since you told comma as separator.
String[] cols = line.split(",");
col0[i] = Float.valueOf(cols[0]);
col1[i] = Float.valueOf(cols[1]);
col2[i] = Float.valueOf(cols[2]);
col3[i] = Float.valueOf(cols[3]);
}
// Do something - your math.
}
br.close();
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}