[英]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.