質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

2899閲覧

java 出入力についてです。

yukina

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2018/02/25 12:19

編集2018/02/26 04:38

現在課題で出入力を解いています。

1)キーボードをタイプして文字列をファイルに書くプログラムを作成。nullが入力されるまで書き込みを繰り返す。ファイル名はtest1.txt。また例外処理をし、例外が発生して時には、
作成できませんと表示するようにする。
2)上記で作成したファイルを読み込み、test2.txtファイルに出力するプログラムを作成しなさい。最初に入力用にtest2.txtを出力用に開いて起き、test1.txtから一行分読み込んだらそのままtest2.txtに出力するようにして最後のデータまで繰り返す。FileNotFoundExceptionが発生したら開けませんと表示し、IOExceptionのときは、printStackTrace()を表示します。

いまやさいしjavaの最新の本を使っています。
ここまで書いたのですが本だけでは限界で、わかりません。力を貸してくれると嬉しいです。

1)
try {
PrintWriter pw = new PrintWriter
(new BufferedWriter(new FileWriter("my.txt")));

BufferedReader br= new BufferedReader(new InputStreamReader(System.in)); while(true) { String str = br.readLine(); pw.println(str); if("".equals(str)) { //nullが入るまで break; } } pw.close(); } catch(IOException e) { System.out.println("ファイルを作成できません。"); } }

}
2)try {

while(true) { BufferedReader br = new BufferedReader(new FileReader("test1.txt")); String str = br.readLine(); System.out.println(str); br.close(); } } catch(FileNotFoundException e) { System.out.println("ファイルを開けません"); } catch(IOException e) { e.printStackTrace() ; } }

}

自分はここまでは、このように考えましたが、ここまですらあっているのかわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

  1. コードに関してはひどすぎる(例題問題ならその前でつくっているはずのことを守ってないと思われる)

  2. コードはマークダウンで

  3. 推奨していない質問

コードをください・デバッグしてください等の丸投げの質問

何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。
問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。
まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。

投稿2018/02/25 12:47

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/25 12:56

例えば 1. ディスクIOを抑えたい 2. ファイル出力が延々と同じ行しか出力されずにループが止まらない 等
LouiS0616

2018/02/25 13:07

コードブロックを適用したうえで現状の動作について充分な記述と考察があれば、質問としては個人的にアリだと思います。
退会済みユーザー

退会済みユーザー

2018/02/25 13:19

具体的なわからない箇所がわかってない感じだから もうちょっとわからないところを具体的に~ですな まあこの本はそれなりにまともなはずなんでわからないところがわかるはずなんですよ(第六版までいってますし) 「はらぺこJAVA」みたいな返品の山書籍じゃないのです。
guest

0

ベストアンサー

少なくともIO系のインスタンスについては、ループより先に生成してください。
現状では一行の入力を受け付ける度に作り直してしまっており、期待通りには動作しません。

また、2番に関しましてはファイル出力の処理がごっそり抜けています。

投稿2018/02/25 12:44

編集2018/02/25 12:45
LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/02/25 12:50 編集

無限ループして1行目のみを延々と出す処理は書いてあると思うぞ (こっちか)
LouiS0616

2018/02/25 13:02

毎回ファイル上書きされちゃいますけどね。
退会済みユーザー

退会済みユーザー

2018/02/25 22:51

サンプルコード(公式)http://mana.on.coocan.jp/yasaj.html を見つけたけど サンプル14-07 : 特定ファイルに固定文字列を2行書き込む サンプル14-08 : 特定ファイルにある最初の2行を読み込む(上記ファイルを読み込む) サンプル14-09 : 特定ファイルにあるすべての行を読み、最大・最小を求める サンプル14-10 : 引数に指定したファイルにあるすべての行を読み込む なぜいいと思ったのが不思議だな
yukina

2018/02/26 04:17

上記サンプルをもとに書いています。最初の入力はできたと思うのですが、 2)がサンプルと説明を読んでも書けなくて・・・ 読み込みが最初の一行しか表示されないんです。
LouiS0616

2018/02/26 05:25

ループ毎にFileReaderのインスタンスを作り直しているからですね。
yukina

2018/02/26 05:42

できました。 2問目のtest2を開いておき、そのまま出力というのは、(1)と同じようなことをするのでしょうか?
LouiS0616

2018/02/26 05:47

(1)が参考になるはずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問