2016-09-25 21 views
0

私はOOPを初めて使っていますが、私はもっと大きなプログラムを作成しようとしています。 私はtxtファイルを読んで、配列に値(double)を格納しました。私はそれをoriginalArrayと呼びます。テキストには2列と20行があります。私はTXTファイルの最初の列の値を印刷したいときだから私は単に書く:古い配列列から新しい配列を作成する

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

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

私の問題は、私は、forループを作成する(または任意の)二つの新しいを使用したいということです各アレイは、「元のアレイ」からの1つの列からなる。

私はこれが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の列から一つの要素を持つ新しい配列を埋め...だから - 私は1つの選ばれた列からすべての要素を持つ新しい配列を埋めるためにループを作成する方法の姿に助けが必要。

非常にお手伝いします!

よろしく/イライラ初心者

EDIT:で新しい2次元配列を作成します

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型に解析しました。後で値を計算するために配列を使用する必要があります。そのため、列を2つの配列に分割する必要があります。 (各列を分析する)。 – 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のデータ – komnena

答えて

0

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)ファイル:これは私がtxtファイルを読み込む方法です第1次元のサイズはoriginalArrayの長さと同じで、第2次元のサイズは2(2列)です。その後、それを単にループして、古い値を1つの列に追加し、必要に応じて新しい値を追加します。そうでない場合は、デフォルトで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]] 

はまた間違ったファイルを読み込みます。各行に2つの値があり、それぞれ;と、\nで区切られています。行ごとに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

あなたのコードはすべて意味がありますが、私の出力を見ると私のファイルを読むときに間違ったことが起きたと思います。 [3.0,0.0]、[5.0,0.0]、[6.0,0.0]、[7.0,0.0]、[1.0,0.01]、[ 8.0,0.0]、[10.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]、[17.0、0.0]、[18.0、0.0]、[19.0、0.0]、[20.0、0.0]] – komnena

+0

あなたを助けるために、ファイルから値を読み取る方法を見なければなりません。とにかく 'originalArray []'に値がないという問題があるので、デバッガを使用してみてください。 –

+0

私の質問が更新されました。手伝ってくれてありがとう!それは私を狂ったものにしている... – komnena

関連する問題