2016-09-25 148 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