2017-04-05 13 views
0

30日間にわたって特定の在庫のパフォーマンスを見ています。私はCSVファイルとして表示されるYahoo financeからデータをダウンロードしました。私のデータセットに新しい列を作成して、オープンとクローズ間の毎日のパーセント変化をjava refer to column H as where the output should appearを使用して表示するにはどうすればよいですか?新しいCSVファイルをjavaで作成して新しい列を追加する

ありがとうございます!

+0

"CSVファイルを作成するにはどうすればいいですか"を意味しますか? –

答えて

0

http://opencsv.sourceforge.net/

public class OpenCSVTest { 

    public static void main(String[] args) { 

     StringWriter target = new StringWriter(); 

     try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { 
      for(String[] line : reader) { 
       String[] added = Arrays.copyOf(line, line.length + 1); 
       added[added.length-1] = "addition"; 
       writer.writeNext(added); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


     System.out.println(target.toString()); 
    } 
} 

あなたの入力と出力とStringReaderStringWriterを置き換えることができます。読者はあなたのCSVの各行を繰り返し処理します。元の行のコピーを作成し、新しい列を追加してターゲットに書き込むことができます。コードの

内訳は:

try(CSVReader reader = new CSVReader(new StringReader("my,test")); 
      CSVWriter writer = new CSVWriter(target);) { ... } 

これは、try-と、リソースブロックです。完了後、リーダーとライターが閉じていることを確認します。

for(String[] line : reader) { 
    String[] added = Arrays.copyOf(line, line.length + 1); 
    added[added.length-1] = "addition"; 
    writer.writeNext(added); 
} 

これはループの標準です。 CSVReaderはIterableインターフェイスを実装しているため、forループで直接使用できます。

Arrays.copyOf(line, line.length + 1);は、渡された配列のコピーを新しいサイズで作成する関数です。列を追加したいので、元の配列my,testのコピーを作成し、最後にもう1つスペースを追加します。次に、新しい値を割り当てることができます。added[added.length-1] = "addition";

最後に、作者にそれを渡します。それはターゲットに正しく値を書き込みます。この場合はStringWriter、場合によってはファイルになります。

+0

こんにちは、tryとcatchの間の部分が何を意味するのか説明できますか?私は非常に基本的なJavaの理解を持って申し訳ありません – avajhelp

+0

@ Javajhelp私は詳細な説明を追加しました。何かが不明な場合は教えてください – pandaadb

関連する問題