- ベストアンサー
Javaテキストファイルコピープログラムの改良方法
- テキストファイルコピープログラムを使って…と同じプログラムを別の形で作ってみようと思いました。
- 考えている方法としては、元のプログラムで一文字書く毎に文字数をカウントし、10で割り切れたら改行を入れるという条件を追加したいです。
- 正しいプログラムの書き方やif文の記入場所について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >if文でcountが10で割り切れたら改行、 >という形にしてみようと思っています。 惜しい!惜しいです。 でも、ずいぶん、いいところまで来ました。 あと、ちょっとです。 countはなにも10で割り切れるか判定する必要はありません。 countが10になったら、改行し、countを0に戻してあげればいいのです。 if文もそのまま続きに書けば、大丈夫です。 後、ヒントとして、改行はBufferedWriterのnewLine()メソッドを使うのがそれぞれのプラットフォームに適した改行コードを入れてくれるので、お得です。
その他の回答 (1)
- PecoPlus
- ベストアンサー率76% (144/188)
あっ、ごめんなさい。勘違いしてました。 今回は、BufferedReaderとBufferedWriterを使ってないのですね。 混乱させたせいか、前回のコードと今回のコードが混じった変なことになってしまいましたね。 でも、まあ、言いたいことは、わかります。 BufferedWriterを使ってないのでnewLine()メソッドが使えません。よって out.write('\n'); で、いいと思いますが、Writerのwriteメソッドの引数にchar型一文字の物がないので、コンパイラに怒られると思います。 工夫してください。 ただ、OSがWindowsとかだと、\nだけだと改行として反映されません。 できたファイルをメモ帳で、開いてみても、改行されてないので、それが我慢ならない場合は、BufferedWriterを使い、newLine()メソッドで改行することを考えてください。 それと、読み込むデータが小さいときは、FileReaderとFileWriterをそのまま使っても、良いかも知れませんが、ちょっと、大きいデータの時は、BufferedReaderとBufferedWriterをかました方が、断然パフォーマンスがいいので、そちらがおすすめです。 タイプミスや文法間違いも多いですが、それは、コンパイラが指摘してくれます。 考え方はあっているので、あとは、学校に行って、コンパイルエラーと戦ってください。
補足
ありがとうございました。 重ね重ね申し訳ないのですが、改行についてもう一つ、fw.write("\n");というのは使えるのでしょうか。
補足
思いつきませんでした! では、全体では 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; int count; while ((ccode = in.red()) ! = -1){ out.write(ccode); count=count+1; if (count=10){bw.newLine();, count=0}; } in.close(); out.close(); bw.close(); } } でしょうか? 最後のbw.close()は必要…ですか? また、改行方法としてif (count=10){out.write('\n');, count=0};でも平気ですか? (実は自宅PCは環境が整っておらず、学校に行くまでエラー確認等ができないので、変なところでミスがあるかもしれませんが…)