• 締切済み

「得た値をCSV出力するJAVAプログラムを書きたい」

「得た値をCSV出力するJAVAプログラムを書きたい」 固定したある点とクリックした点の距離は取得できました つまり、クリックするごとに2点間の距離は変わります 例えば 1回目:10cm 2回目:20cm 3回目:5cm とします 流れはクリック→10cmという値を取得→クリック→20cmという値を取得→・・・ するとCSVファイルには10,20,5という風に出力されるようにJAVAプログラムを書きたいです 色々調べたんですが、読み込みの方法がいまいちわかりません(全体的なこともですが・・・) データベースを読み込むとかはよく見かけるのですが。 また、実行したら勝手にCSVファイルが出来るのか? 下記のプログラムまでは出来ました import java.io.*; public static void main( String args[] ) { try { PrintWriter pw = new PrintWriter( new BufferedWriter( new FileWriter( "output.csv" ) ) ); pw.println( "kyori" ); System.out.println( "ファイルに書き込みました。" ); pw.close(); } catch( IOException exp ) { System.out.println( "入出力エラーです。" ); } } 何かアドバイスをお願いします。

  • Java
  • 回答数3
  • ありがとう数7

みんなの回答

  • hideishi
  • ベストアンサー率55% (5/9)
回答No.3

//基本的なCSV出力処理のサンプルコードです。 import java.io.*; public class Test2 { private void exec() { String[] lines = { "1_1, 1_2, 1_3", "2_1, 2_2, 2_3" }; try { FileOutputStream fos = new FileOutputStream("output.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos, "Shift_JIS"); BufferedWriter bfw = new BufferedWriter(osw); // 配列データ(lines)を書き込む for (int i = 0; i < lines.length; i++) { // ファイルに1行分の内容を書き込む bfw.write(lines[i]); // 改行をセットする bfw.newLine(); } // ファイルオブジェクトを破棄する bfw.close(); osw.close(); fos.close(); } catch (IOException ex) { // エラーメッセージ出力 System.out.println(ex.getMessage()); } } public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Test2 tp = new Test2(); tp.exec(); } } ファイル入出力処理の詳細については、 http://www.javaroad.jp/java_io4.htm http://www.letsstudy.net/java/603/Notes.html などを参照してください。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 現在そのクリックして値を取得している処理がどのようになっているかわからないので何ともいえません。 今はどのようにクリックした座標を取得しているのでしょうか。 また、動作がアプレットなのかSwing等のアプリなのか何で動いているのでしょうか。 例えばMouseListener等を利用してクリック時の処理をしているならメンバ変数に List<Kyori>listKyori = new ArrayList<Kyori>(); public void mouseReleased( MouseEvent e ) {  // クリックされたとき  listKyori.add ( new Kyori(計算後のint値} ); } のような感じで値をaddしていくとアプリを終了するまではlistKyoriに計算した値で生成されたKyoriクラスが作られていきます。 「CSV出力」みたいなボタンや10回繰り返したら等の条件後にCSV出力の部分を実行すればlistKyoriに追加されていた値がCSVとして展開されます。 読み込みというのが何か別のファイルに値が保存されている等でしたらそのファイルのフォーマット等がわからないと具体的なアドバイスが難しいです。 ・現在どのような仕様で動いているのか(全体的に)またはどのような動かし方を考えているのか(具体的に) この辺を補足下さい。

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 >色々調べたんですが、読み込みの方法がいまいちわかりません(全体的なこともですが・・・) 読み込みの方法とは何を読み込むということでしょうか。 >また、実行したら勝手にCSVファイルが出来るのか? CSVって単なるフォーマットみたいなものですので自分で作るだけです。 クリックした値をどのように保持しているかわかりませんが、その保持している値をカンマ区切りの文字列にしてファイルに出力すればOKです。 String csvStr = "10,20,5"; pw.println ( csvStr ); 例えばですが距離クラスを作成しておいて class Kyori {  private int kyori;  public Kyori ( final int kyori ) {   this.kyori = kyori;  }  public String getKyori() {   return String.valueOf(this.kyori);  } } クリックするごとに上のクラスを生成してリストに入れます。 List<Kyori>list = new ArrayList<Kyori>(); // クリック時 list.add ( new Kyori(クリック座標) ); // CSVを作る int max = list.size(); for ( int i = 0; i < max; i ++ ) {  if ( i > 0 ) {   pw.print ( "," );  }  Kyori kyori = list.get(i);  pw.print ( kyori.getKyori() ); } こんな感じにしてあげればリストに追加されたKyoriクラス分(クリック分)がカンマ区切りの文字列ファイルとして出力されると思います。 (実際に動作の確認はしていないのでコンパイルエラー等責任は負いかねます。いろいろ試してみてください)

aoi321
質問者

補足

読み込みの方法・・・つまり保持の方法がわかりません どういう方法があるか教えていただけませんか?

関連するQ&A

  • JavaのFileWriterについて

    はじめまして。 以下のようなプログラムで、new FileWriter("test1.txt")の【test1.txt】が最終的にどの親クラスのコンストラクタ(メソッド?)に渡されて処理されるのかがわかりません。 new演算子で FileWriterオブジェクトを作成した際に、importした親クラスのFileWriterクラスにあるコンストラクタが呼び出されるのだろうとは思っています。 そこで、JavaのAPIのサイトにて、クラス FileWriterの説明(http://docs.oracle.com/javase/jp/6/api/)を読みましたが、コンストラクタが複数紹介されており、下記のプログラムに当てはまるものがどれか分かりませんでした。 また、クラス FileWriterの説明ページのコンストラクタの概要にあるpublic FileWriter(File file)というコンストラクタの場合、引数リストのFileにもリンクがあり、Fileのリンク先のページであるクラス Fileの説明(http://docs.oracle.com/javase/jp/6/api/)を読みましたが、結局test1.txtがどのクラスのコンストラクタ(メソッド?)でどのように処理されているのかが分かりません。 どうかご教示いただきたく、よろしくお願い致します。 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Sample7 { public static void main(String[] args){ PrintWriter pw = null; try{ pw = new PrintWriter (new BufferedWriter(new FileWriter("test1.txt"))); pw.println("Hello!"); pw.println("GoodBye"); System.out.println("ファイルに書き込みました。"); }catch(IOException e){ System.out.println("入出力エラーです。"); }finally{ if(pw != null){ pw.close(); } } } }

    • ベストアンサー
    • Java
  • Java・ファイルへの書き込み

    はじめまして。 下記のプログラムで、以下の3つがどのような関係なのかがわかりません。 ("test1.txt")とnew FileWriterの関係 (new FileWriter("test1.txt")とnew BufferedWriterの関係 (new BufferedWriter(new FileWriter("test1.txt")と new PrintWriterの関係 どうかご教示いただきたく、よろしくお願い致します。 import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class Sample7 { public static void main(String[] args){ PrintWriter pw = null; try{ pw = new PrintWriter (new BufferedWriter(new FileWriter("test1.txt"))); pw.println("Hello!"); pw.println("GoodBye"); System.out.println("ファイルに書き込みました。"); }catch(IOException e){ System.out.println("入出力エラーです。"); }finally{ if(pw != null){ pw.close(); } } } }

    • ベストアンサー
    • Java
  • javaにおけるCSV出力時の文字コード改行コード

    JavaでCSVを出力する処理を作りました。 下記コードだとUnix環境で文字コードSJISで改行コードLFで出力されますが、 Windows環境でもUnix環境でも一律、文字コードSJISで改行コードCRLFで出力されるようにしたいです。 何かいい方法はありませんでしょうか。 なお、printlnで出力している行が多い為、 bw,Print("日付" + 変数A + \r\n); というふうに一行づつ変更するのは避けたいと思っております。 try{ PrintWriter bw = new PrintWriter(new BufferdWriter(new OutputStreamWriter(new FileOutputStream(/tmp/test.csv),"SJIS"))); bw.println("日付" + 変数A); bw.println("氏名" + 変数B); ・ ・ ・ }catch(Exception e){ // ログに出力 }

    • ベストアンサー
    • Java
  • Javaのカウント方法について

    お伺い致します。 CSVで取り込んだデータの抽出をしたいのですが、方法が見出せません。どの点を直せば宜しいのでしょうか。 具体的には取り込んだ郵便番号をカウントして(例:京都市,34)CSVファイルに出力するように出したいのですがカウントがうまくできません。(以下、コメントアウトしたものがありますが、今までのソースを記載します) 宜しく御願いします。 import java.io.FileReader; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.*; public class test01 { static String fname ="26KYOUTO.CSV"; public static void main(String[] args){ if(args.length>0) fname = args[0]; try { BufferedReader reader = new BufferedReader(new FileReader(fname)); BufferedWriter pw = new BufferedWriter(new PrintWriter("orig.txt")); String line = reader.readLine(); System.out.println(line); pw.println(""); int n = 0; int count = 0; _/* while(true) { String line = reader.readLine(); if(line.equals("26101")) break; count++; } */ reader.close(); System.out.println("京都府北区=" +count ); } catch(FileNotFoundException e) { System.out.println("ファイルがありません。"); } catch(IOException e) { System.out.println("入出力エラーです。"); } } }

    • ベストアンサー
    • Java
  • javaプログラムのファイル書き出しについて

    以前はファイルに書き出すためのパスが違っており、書き出せずにいるところをアドバイスいただきありがとうございます。 プロフィールを書くプログラムを組んでいます。 打ち込んだプロフィールを画面に表示すると同時に、ファイルにも結果を書き出したいのですが、書き出せれる内容が、打ち込んだ内容ではなく、 プルグラムの書き込み欄に例として表示される用に書いている、 下の内容が書き出されてしまいます。 「name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30);」 テキストファイルに書き出される内容です。 「名前:名前 生年月日:生年月日 住所:住所 mail:mail 電話:電話番号」 打ち込んだ内容がテキストファイルに書き出すにはどうすればいいでしょうか? 下がソースコードです。 よろしくお願いします。 import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class Sample extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L; static JTextField name; static JTextField birth; static JTextField address; static JTextField mail; static JTextField number; JLabel label; public static void main(String args[]){ Sample frame = new Sample("profile"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30); JButton button = new JButton("取得"); button.addActionListener(this); label = new JLabel(); p.add(name); p.add(birth); p.add(address); p.add(mail); p.add(number); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); try{ File file = new File("C:\\Users\\mattun\\Documents\\sample.txt"); if (checkBeforeWritefile(file)){ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); //ファイルに書き込む内容 pw.println("名前:"+name.getText()); pw.println("生年月日:"+birth.getText()); pw.println("住所:"+address.getText()); pw.println("mail:"+mail.getText()); pw.println("電話:"+number.getText()); pw.close();//ファイルを閉じる }else{ System.out.println("ファイルに書き込めません");//書き込み出来ない場合 } }catch(IOException e){ System.out.println(e); } } public void actionPerformed(ActionEvent e){ label.setText("<html>"+"名前:"+name.getText()+"<br>"+"生年月日:"+birth.getText()+"<br>"+"住所:"+address.getText()+ "<br>"+"mail:"+mail.getText()+"<br>"+"電話:"+number.getText()+"</html>"); } private static boolean checkBeforeWritefile(File file){ if (file.exists()){ if (file.isFile() && file.canWrite()){ return true; } } return false; } }

    • ベストアンサー
    • Java
  • Javaのプログラミングで困っています。

    プロフィールを打ち込んで表示するプログラムを書いていました。 プロフィールの打ち込み後に画面に表示するのと同時にテキストファイルに書き出したいと思ったため、書いてみましたが、ファイルに書き込めず知識不足で困っています。 是非教えていただきたく書き込みをさせていただきました。 自分で書いたコードは書きになります。 import java.io.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; class Sample extends JFrame implements ActionListener{ /** * */ private static final long serialVersionUID = 1L; static JTextField name; static JTextField birth; static JTextField address; static JTextField mail; static JTextField number; JLabel label; public static void main(String args[]){ Sample frame = new Sample("profile"); frame.setVisible(true); } Sample(String title){ setTitle(title); setBounds(100, 100, 500, 300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel p = new JPanel(); name = new JTextField("名前", 20); birth = new JTextField("生年月日", 20); address = new JTextField("住所", 40); mail = new JTextField("mail", 40); number= new JTextField("電話番号", 30); JButton button = new JButton("取得"); button.addActionListener(this); label = new JLabel(); p.add(name); p.add(birth); p.add(address); p.add(mail); p.add(number); p.add(button); Container contentPane = getContentPane(); contentPane.add(p, BorderLayout.CENTER); contentPane.add(label, BorderLayout.SOUTH); try{ File file = new File("C:Users\\mattun\\Documents\\sample.txt"); if (checkBeforeWritefile(file)){ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); //ファイルに書き込む内容 pw.println("名前:"+name.getText()); pw.println("生年月日:"+birth.getText()); pw.println("住所:"+address.getText()); pw.println("mail:"+mail.getText()); pw.println("電話:"+number.getText()); pw.close();//ファイルを閉じる }else{ System.out.println("ファイルに書き込めません");//書き込み出来ない場合 } }catch(IOException e){ System.out.println(e); } } public void actionPerformed(ActionEvent e){ label.setText("<html>"+"名前:"+name.getText()+"<br>"+"生年月日:"+birth.getText()+"<br>"+"住所:"+address.getText()+ "<br>"+"mail:"+mail.getText()+"<br>"+"電話:"+number.getText()+"</html>"); } private static boolean checkBeforeWritefile(File file){ if (file.exists()){ if (file.isFile() && file.canWrite()){ return true; } } return false; } }

    • ベストアンサー
    • Java
  • java classの呼び出し方を教えて下さい。

    java classの呼び出し方を教えて下さい。 public class test extends Applet implements Runnable,ActionListener,KeyListener{ Thread th; // スレッド宣言 AudioClip IdoSound,KaitenSound,KesiSound,SetSound,CrySound; public void init(){ }   ・   ・   ・ public void test(){ ここで、最下欄の class stream{ public static void main(String args[]){ } を実行させたいのですが、記入方法が解りません・・・ } public int kesiOne(int VP,int HP){ }    ・    ・    ・ class stream{ public static void main(String args[]){ try{ File file = new File("c:\\java\\data.txt"); if (checkBeforeWritefile(file)){ PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); pw.println("12345"); pw.close(); }else{ System.out.println("ファイルに書き込めません"); } }catch(IOException e){ System.out.println(e); } } private static boolean checkBeforeWritefile(File file){ if (file.exists()){ if (file.isFile() && file.canWrite()){ return true; } } return false; } } 解りにくい書き方で申し訳け有りませんが、宜しくお願いします。

  • 数値化された値が欲しい

    作成して頂かなければ無いですが、RESULTファイルにある文字列(0~9)を数値に変換しようと思います。 この時、得た数値idtを2つ目にあるtry文の中のaDateFilterに入れたいのですが型の違いから上手く入れる事ができません。 どのようにidtから値を受け取るプログラムを作れば良いのか教えてください。お願いします。 //文字列から数値に変換するプログラム class ChStr { private String sa; int idt; public ChStr() { try { System.out.println("第1ステップ実行中・・・"); PrintWriter aDate = new PrintWriter(new BufferedWriter(new FileWriter("DateNum"))); File aDateFilter = new File("RESULT"); BufferedReader CFDF = new BufferedReader(new FileReader(aDateFilter)); while((sa = CFDF.readLine()) != null) { try { idt = Integer.parseInt(sa); System.out.println("数値=" + idt); //PrintWriter PWDF = new PrintWriter(new BufferedWriter(new FileWriter(aDateFilter))); //PWDF.println(sa); PWDF.close(); } catch(Exception e1) { System.out.println("Erorr1"); System.exit(1); } } } catch(Exception e2) { System.out.println("Erorr2"); System.exit(1); } System.out.println("数値化完了\n"); } }

  • csvファイルを出力する簡単なプログラム

    初心者です。 csvファイルを読み込んで、それを加工(列を増やして文字を決まった列を挿入)したcsvファイルを出力する簡単なプログラムを模索しているのですが、どのようなものを作ればいいのかわかりません。こういうものはどういう風に考えて作っていくものなのか、大まかに教えてもらえないでしょうか。まず、csvファイルを読み込むという作業をどのようにコンピュータにやらせればいいのでしょうか? ちなみに『やさしいJAVA』(初歩の方)は一律読破しました。 お願いします。

  • ファイルに出力する際、上書きしない(Java)

    Javaで、例えばテキストファイルに「aaa」と出力する際、 try { PrintWriter fout = new PrintWriter(new BufferedWriter( new FileWriter("tst1.txt"))); fout.println("aaa"); fout.close(); } としているのですが、このプログラムを一度実行したあと「aaa」の部分を「bbb」と書き直して再度実行した場合、 tst1.txtには、「bbb」と記されています。 つまり、上書きされたということだと思うのですが、 上書きではなくて、「aaa」の後に続けて「bbb」と表記する方法を教えていただきたいです。 うまく説明できていないと思いますが、わかりにくい点は指摘していただければ補足しますので、よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう