java初心者の困りごと!プログラム実行時に改行されない

このQ&Aのポイント
  • java初心者が簡単なプログラムを実行していますが、改行がされずに困っています。
  • 特定の配列をファイルに書き込む際に、改行がうまくできません。
  • 改行を正しく行う方法を教えてください。
回答を見る
  • ベストアンサー

お世話になります。

お世話になります。 java初心者です 簡単なプログラムがうまく動かなくて困ってます import java.io.*; class Lesson21{ public static void main(String args[]){ try{ //FileWriterオブジェクトの生成 FileWriter f_w = new FileWriter("Matrix.txt" , true); String matrix[] = {"エージェント","モーフィアス", "ネオ","トリニティ","ナイオビ"}; for(int i = 0; i < matrix.length; i++){ f_w.write(matrix[i] + "\n"); } System.out.println("書き込み完了"); //FileWriterのクローズ f_w.close(); } catch(IOException e){ System.err.println("Exception : " + e); } } } String matrix[] = {"エージェント","モーフィアス","ネオ","トリニティ","ナイオビ"}; この配列をf_w.write(matrix[i] + "\n");と書いているので改行してMatrix.txtに書きこめるはずなのですがデータとしてはMatrix.txtに改行なしで横につながります。 うまく改行さすにはどうすると宜しいのでしょうか だれか助けてください。 宜しくお願いします

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

質問者が選んだベストアンサー

  • ベストアンサー
  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.2

そのコードで問題なく\nが書き込めている。 もし改行が\n以外のシステムであれば、例えばCRLFなら\r\nを書き込むか、 FileWriterをPrintWriterで包んで、 PrintWriter f_w = new PrintWriter(new FileWriter("Matrix.txt", true)); ... f_w.println(matrix[i]); のようにするか、FileWriterをBufferedWriterで包んで、 BufferedWriter f_w = new BufferedWriter(new FileWriter("Matrix.txt", true)); ... f_w.write(matrix[i]); f_w.newLine(); のようにする方法がある。

yh_0145
質問者

お礼

お礼遅くなってすみません。 ¥r¥nを書き込めばうまく改行するようになりました。 どうもありがとうございました。

その他の回答 (2)

  • vaguechat
  • ベストアンサー率85% (47/55)
回答No.3

補足 もしくは、FileWriterのままでもシステムプロパティのline.separatorで定義されている改行文字を得られるならこれを"\n"の代わりに使う。 このプロパティ文字列はSystem.getProperty("line.separator")で得ることができる。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

何をどうしたいのでしょうか?書いているプログラムがどうのこうのではなく、何をしたいのかを書いてください。

yh_0145
質問者

補足

早速ありがとうございます 配列の中身をファイルに書き出しその時に配列の要素ごとに改行をさせたいのです。

関連するQ&A

  • 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
  • 超基本的な質問?ファイルの変数

    すごく基本的な質問だと思うのですが、 FileWriter 変数をクラスのメンバとしては持てないのでしょうか? たとえば、下のように書くとエラーが出るのですが、何がまずいのでしょうか? import java.io.FileWriter; public class FileTest {   FileWriter fw;   public static void main(String[] args) {     try {       fw = new FileWriter("test.txt");       fw.close();     } catch (Exception e) {     System.out.println("Exception: " + e);     }   } }

    • ベストアンサー
    • Java
  • 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
  • Stringオブジェクトの文字コードの変換

    NewString = new String(b.getBytes("iso-8859-1"),"Shift_JIS"); でShift-Jisに変換できるとありましたが、どうも出力の 日本語部分が3Fになってしまってうまくいきません。 テスト用に以下のコードを作ってみました。 import java.io.File; import java.io.FileWriter; import java.io.BufferedWriter; import java.io.IOException; import java.io.FileOutputStream; public class Test { public static void main(String[] args) { try{ String regex_title; regex_title = "制限をしている場合"; System.out.println(getHexString(regex_title.getBytes())); System.out.println(getHexString(regex_title.getBytes("iso-8859-1"))); regex_title = "制限をしている場合"; regex_title = getUTF8(regex_title); System.out.println(getHexString(regex_title.getBytes())); System.out.println(getHexString(regex_title.getBytes("iso-8859-1"))); regex_title = "制限をしている場合"; regex_title = getShiftJIS(regex_title); System.out.println(getHexString(regex_title.getBytes())); System.out.println(getHexString(regex_title.getBytes("iso-8859-1"))); FileOutputStream fs = new FileOutputStream("./test.txt"); fs.write(regex_title.getBytes()); fs.close(); }catch(Exception ex){ } } public static String getHexString(byte[] b){ String buff=""; try{ for(int i=0;i<b.length;i++) buff += String.format("\\x%02x", b[i]); }catch(Exception ex){ } return buff; } public static String getUTF8(String b){ try { //UTF-8へ変換 return new String(b.getBytes(), "UTF-8"); } catch (Exception e) { e.printStackTrace(); return b; } } public static String getShiftJIS(String b){ try { //UTF-8へ変換 return new String(b.getBytes(),"Shift_JIS"); } catch (Exception e) { e.printStackTrace(); return b; } } // @Override } //////////////////////////////////////////////////////////// 1. System.out.println(getHexString(regex_title.getBytes("iso-8859-1"))); の部分の出力をみると3Fに変換されています。 regex_title.getBytes("iso-8859-1")の時点で3Fな事がわかります。 何故でしょうか? 私がやりたい事はStringの内部のコードをUTF8にする事です。 NewString = new String(b.getBytes("iso-8859-1"),"UTF-8"); では、出来ていないようでした。 2. また、以下のコードを実行するとtest.txt test2.txtともに 文字コードがShiftJisで出力されるのはなぜでしょうか? 変換を行わなければ内部処理形式のUnicodeで出力されるの ではないのでしょうか? regex_title = "制限をしている場合"; FileOutputStream fs = new FileOutputStream("./test.txt"); fs.write(regex_title.getBytes()); fs.close(); File file = new File("./test2.txt"); BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write(regex_title); bw.close(); 上はgetBytes()が変換してるのでしょうか? 下はBufferedWriterかFileWriterが変換してる? ではString内部のByteをそのまま出力するにはどうしたら・・・。

    • ベストアンサー
    • Java
  • Writer & PrintWriter

    import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(w); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } と import java.io.*; public class JavaIO4 { public static void main(String args[]) throws Exception { //Writer w=new FileWriter(args[0]); PrintWriter pw=new PrintWriter(args[0]); for (int i=0; i<=330; i+=30) { double atai=Math.sin(Math.PI*i/180.0); String str="sin("+i+")="+atai+"\n"; pw.write(str); } pw.close(); } } の結果が同じになるんですけど、 Writer w = new FileWriter(args[0]); PrintWriter pw = new PrintWriter(w); とするのはなぜなんですか? 何か意味はあるんですか?

  • プログラムの添削をお願いします。

    読み込んだテキストファイルを十文字ごとに改行して、別のファイルにコピーするプログラムです。 import java.io.*; public class CopyText{ public static void main(String[] args) throws IOException { FileReader in = new FileReader("inputtext.txt"); FileWriter out = new FileWriter("outputtext.txt"); int ccode, count; while ((ccode = in.read()) ! = -1){ out.write(ccode); count=count+1; if (count=10){fw.write('\n');, count=0}; } in.close(); out.close(); } } 7行目のところで、「')'がありません」「互換性のない型」というエラーが出るのですが、どう直したらいいのかがわからないのでご指導お願いします。

    • ベストアンサー
    • Java
  • マトリックス リローデッドでの疑問

    前作ではエージェントは3人いましたよね ラストでそのうちの一人(スミス)が破壊されてましたが リローデッドでは「プラグが外れて自由になった」「自分のコピーを増やせる」などと言って復活してますが、なんで生きていた(生き返った?)のか、ネオとスミスの会話ではよく分かりませんでした・・結局どういうことなんでしょう? あと、前作で生き残っていた残り二人のエージェントはどうなったんでしょうか? 一人は、オラクルとの会話の後の大勢のスミスとのバトルの途中にスミスにコピーされてしまったようですが・・。 そうすると、残りの一人は一体・・・? 高速道路での戦いのときに、パトカーに乗っていた警察官 に置き換わった(?)のが残りの一人なんでしょうか? とすると、トラックの荷台の上でモーフィアスと決闘した エージェントとは同一人物でしょうか? 更に更に、高速道路の戦いのラストでトラックとトラックを正面衝突させた運転手も、そのエージェント? ということは、その後トリニティがネオを助けに マトリックスに入って、ビルから落下しながら 撃ち合いをした相手もそのエージェントなのでしょうか? エージェントはぱっと見みわけがつにくくて; そもそもあれが残りのエージェントだとすると、 結局ビル落下時のトリニティとの撃ち合いの時に 地面に落下して死んだんでしょうか? あと、ツインズはモーフィアスの刀→車銃撃の時の爆発で 死亡したということで間違いないでしょうか。?

  • マトリックス

    いまさらですが、マトリックスで確認を。 1.オープニングシーンでトリニティが警官に「手を上げろ」といわれるビル。最初にカメラはその看板を捕らえますが、「HEART」とかかれています。最後のシーンのネオがエージェントを粉砕するビルも「HEART」という看板がアップになります。これは同じビルという事のようです。意図的だと思うのですが、どんな意図なのでしょう?多分観客に対してデジャヴの韻を踏んでいるのではないかと思いますが。赤いドレスの女のシーンも通行人は全員双子で、同じ顔と二回すれ違うようにしたらしいですし。 2.サイファーはエージェントと取引して裏切りますが、記憶を消される以上、又、マトリックスに拘束される以上、どんな約束も保証され得ません。「有名人にしてくれ」といいますが、約束がなされたかどうか確認のしようがないので成立しないと思います。よってサイファーはアホなんでしょうか?。あるいは好きなトリニティがネオにお熱を上げているので錯乱したのでしょうか? 3.預言者は「あんたは救世主ではない」といいますが「来世かもね」といいます。ネオはラストでエージェントに撃たれいったん死にます。そしてトリニティのキスで生き返ります。これを生まれ変わったと考えれば予言通り「来世」だったということになりますか? 4.モーフィアスは「実際には今は2199年だ」と言ってました。マトリックス内は「1999年」です。この時差は何の意味があるのでしょうね?もしかしてずっと1999年のままなんでしょうか?

  • キーボード入力データを外部ファイルに書き込む

    2つのTextFieldに入力された単語を「A, B」というように、間にデリミタを挟んだ形でFileWriterを用いて外部txtファイルに格納するプログラムを作っています FileWriter単体では class filewrite { public static void main(String[] args){ try{ FileWriter fw = new FileWriter("D:/java/javatango.txt", true); fw.write("一 , one"); fw.close(); } catch (IOException e){ System.out.println(e); } } } で実行できるのですが、この「一」「one」を別々のTextFieldにキーボードから入力されたデータにしたいのですが、その場合はどのようにすれば良いでしょうか

    • ベストアンサー
    • Java
  • タグ以外の文字を取り出す2

    //ファイルに書き込む用意をします。ここではsource.txtというファイルに書き込みます。 PrintWriter pw = new PrintWriter(new FileWriter("honbun.txt")); line = reader.readLine(); while(line != null && line.indexOf("<div class=\"main\">") == -1){ line = reader.readLine(); } while(line != null && line.indexOf ("</div>") == -1){ for(i=0; i<line.length() ; i++){ c = line.charAt(i); if(c=='<'){ while('>' != line.charAt(i)){ i++; } } else{ pw.println(c); } } //pw.println('\n'); line = reader.readLine(); } pw.println(line); //</div>が出現した行、つまり記事の最後の行をファイル kekka.txt に書き込んでいます reader.close();//閉じます。 pw.close(); //例外処理です。 } catch(MalformedURLException e){ System.out.println(e); }catch(IOException e){ System.out.println(e); } catch(Exception e){ System.out.println(e); } } } これをコンパイルして実行して、honbun.txtを 開いても一文字事に改行されて表示されます。 また最後の行(</div>)が含まれる行の タグが除去されません。 お願いします。 readLine()はソースを一行読み込んでいます。 フィールドやらは字数の関係でかけませんでした。 すいません。lineはString型です。

    • ベストアンサー
    • Java