[英]Java: How do I read 4 numbers from each line in a file. And put them into variables?
文本文件如下所示:
数据,数据,数据,数据
数据,数据,数据,数据
数据为数字。 4个数字,以逗号分隔,大约2000行。 但是我一次只需要使用20行。 需要根据其编号选择起始行,然后再获得19行。
该数据需要放入唯一命名的变量(浮点数)中,以便随后对它们进行数学运算。 因此可以这样命名:
DataOne1 DataOne2 DataOne3 DataOne4
DataTwo1 DataTwo2 DataTwo3 DataTwo4
这样,我便可以像DataTwo1-DataOne3一样进行数学运算。 这些变量当然总是被命名为相同的,但是我将能够通过选择新行来更改基础数据。
抱歉,这是一个初学者的问题,但是我完全无法将不同解决方案的内容放在一起以获得确切的解决方案。
所以我的问题是我该怎么做?
1.您可以使用Scanner
方法nextLine(
)读取整行 。
2.然后使用split()
方法(我假设数据用(“,”)逗号分隔),以获取该行上的所有4个数据。
例如:
String[] s = strLine.split(",");
3.考虑制造ArrayList
的Float
,然后将转换的每个项目中String[]
数组成Float
在项目ArrayList
,使用 Float.parseFloat()
ArrayList<Float> fArr = new ArrayList<Float>();
for (String temp : s){
fArr.add(Float.parseFloat(temp));
}
4.然后进行所需的任何计算。
这些是您需要获得所需内容的步骤:
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
}
这是代码。 对于每一行,我都将值存储在数组中。 因此,您的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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.