2016-09-25 93 views
0

我是新來OOP,但我想創建我的第一個大項目新的數組。 我讀過一個txt文件並將值(雙打)存儲到一個數組中,我將其稱爲originalArray。該文本有兩列和20行。所以,當我想在TXT文件的第一列打印的價值,我只是寫:創建一個從舊陣列列

System.out.println(originalArray[0]); 

OUTPUT: 1991.00 
     300.50 
     498.50 .... et cetera... 

我的問題是,我想使用一個for循環(或其他)來創建兩個新數組,每個由「原始數組」組成一列。

我認爲這將是作爲使用一個for循環,像這樣一樣簡單;

double [] newArray = new double [20]; 

    for(int i = 0; i < originalArray.length; i++){ 

    newArray[i] = originalArray[0] //if I want to fill it with the first  

    //columns data... the second would be newArray2[i] = originalArray[1] 
    } 

但這種填充一個元素的新數組從originalArray列...所以 - 我需要幫忙就怎麼寫循環,從一個所選列填充所有元素的新的陣列圖。

的幫助非常感謝!

祺/沮喪新手

編輯:這是我讀txt文件:

String file = "C:\\Users\\komena\\Desktop\\30th-sales.csv"; 

BufferedReader br = null; 
String line = ""; 
String splitBy = ";"; 

originalArray = new double [20]; 
br = new BufferedReader(new FileReader(file)); 
br.readLine();//skip the first line to get rid of header… 
while ((line = br.readLine()) != null) { 

String[] readlineArray = line.split(splitBy); 

for (int i = 0; i < readlineArray.length; i++) { 
originalArray[i] = Double.parseDouble(readlineArray[i]); 

} 

整個文本(CSV)文件:

300.50;330.00 
489.50;296.50 
34.50;399.50 
900.00;1890.00 
2052.00;568.00 
354.00;0.00 
399.00;0.00 
1299.50;0.00 
426.00;259.00 
29.50;2300.50 
99.50;349.50 
2500.50;0.00 
358.50;113.00 
789.00;239.50 
998.00;348.00 
16.50;679.00 
800.00;723.00 
1899.50;950.50 
550.50;568.00 
+0

您是否擁有'originalArray [0]'中第一列的所有數據? 'originalArray'的類型是什麼? – marstran

+0

他們都是雙重的。當我讀取文件時,首先將它讀取到一個String數組中,然後將其解析爲double。我需要使用這些數組來計算後面的值,這就是爲什麼Ii需要將列分隔成兩個數組。 (將分析每列)。 – komnena

+0

1991.00, 300.50, 489.50, 34.50, 900.00, 2052.00, 354.00, 399.00, 1299.50, 426.00, 29.50, 99.50, 2500.50, 358.50, 789.00, 998.00, 16.50 , 800.00, 1899。50, 550.50 // originalArray [0] – komnena

回答

0

創建一個新的二維數組第一維的大小與originalArray的長度相同,第二維的大小爲2(2列)。然後簡單循環,並添加舊值一列,此外,如果新的reuqired,否則會defaultly設置爲0.0

double originalArray[] = {1991.00, 300.50, 498.50}; 
double newArray[][] = new double[originalArray.length][2]; 
for (int i=0; i<originalArray.length; i++) { 
    newArray[i][0] = i        // Fill the 1st column with sth like ID 
    newArray[i][1] = originalArray[i];    // Copy the 1D array to the 2nd column 
} 
System.out.println(Arrays.deepToString(newArray)); // Print all the array values 

輸出:

[[1.0, 1991.00], 
[2.0, 300.50], 
[3.0, 498.50]] 

而且你讀的文件是錯誤的。注意,必須在與分離\n;線分離的每行2個值。因此,請逐行閱讀並將2個值添加到數組中。

i的變量表示originalArray[]的實際索引。

BufferedReader br = null; 
String line = ""; 
int i=0; 
double originalArray[] = new double[20]; 
br = new BufferedReader(new FileReader(file)); 
br.readLine();//skip the first line to get rid of header… 

while ((line = br.readLine()) != null && i<originalArray.length) { 
    String[] readlineArray = line.split(";"); 
    originalArray[i] = Double.parseDouble(readlineArray[0]); 
    originalArray[i+1] = Double.parseDouble(readlineArray[1]); 
    i+=2; 
} 
System.out.println(Arrays.toString(originalArray)); 
+0

的數據你的代碼使所有的感知,但我想我可能做錯了,當我閱讀我的文件,因爲現在我的輸出看起來像; [0.0,0.199.00],[1.0,300.50],[2.0,0.0],[3.0,0.0],[4.0,0.0],[5.0,0.0],[6.0,0.0],[7.0,0.0],[ [0.0.0,0.0,0.0],[11.0,0.0],[12.0,0.0],[13.0,0.0],[14.0,0.0],[15.0,0.0],[16.0, 0.0.0,[17.0,0.0],[18.0,0.0],[19.0,0.0],[20.0,0.0]] – komnena

+0

爲了幫助您,我必須看到您從文件中讀取值的方式。無論如何嘗試使用調試器,因爲問題是'originalArray []'中的某些值確實丟失了。 –

+0

更新了我的問題。感謝幫助!這讓我瘋狂... – komnena