みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

入出力について

下記のソースコードで、2点不明な点がありますので
ご教授お願い致します。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class ab3{
public static void main(String args[]){
BufferedReader myReader = new BufferedReader(
new InputStreamReader(System.in));

try{

System.out.println("名前を入力してください");
String myString = myReader.readLine();
System.out.println(myString + "さん、こんにちわ!");

}catch(IOException e) {
}
}
}

1.
BufferedReader myReader = new BufferedReader(new
InputStreamReader(System.in));

ここのソースコードについてですが、

new BufferedReader(new InputStreamReader
^^^ ^^^
(System.in));

「new」が二つもついていますが、何故二つも
つける必要があるのでしょうか。
一つであっても問題はないと思われ、
2番目の「new」を取り除くと、エラーが表示されて
しまいます。

また、上記ソースコードを

BufferedReader myReader ;
myReader = InputStreamReader(System.in));

と分割して書こうとしてもエラーが表示されてしまいます。

2.
String myString = myReader.readLine();

ここの部分ですが、これはString型のインスタンス(コンストラクタ?)を
作っていると思われますが、この部分を

String myString ;
myString = myReader.readLine();

または、

String myString = new myReader.readLine();

としてたら、エラーが表示されてしまいます。


JAVAを初めて間もなく、質問の内容がわかりづらいと
思われます。入出力について理解するのに苦労して
おりますが、何卒ご教授の程お願い致します。

投稿日時 - 2006-08-27 22:07:07

QNo.2366455

KGM

暇なときに回答ください

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

(1)BufferedReader myReader = new BufferedReader(new InputStreamReader(System.in)); を二つに分けると
InputStreamReader sr = new InputStreamReader(System.in);
BufferedReader myReader = new BufferedReader(sr);
となります。

(2)String myString ;
myString = myReader.readLine(); は問題ないですよ。
または
String myString="";とか String myString = null;としてから
myString = myReader.readLine(); と考えると理解しやすいかもしれません。

投稿日時 - 2006-08-27 23:19:27

お礼

返信が遅れて申し訳けありません。

すごくわかりやすく、マスターできました^^
(1)のオブジェクトを二つにわける方法は
助かりました。。

投稿日時 - 2006-09-06 20:26:44

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>「new」が二つもついていますが、何故二つもつける必要があるのでしょうか。

new コンストラクタ
で、新しいオブジェクト(インスタンス)を作成しますので、
作成するそれぞれのクラスでnew することが必要です。

>String myString = new myReader.readLine();
>としてたら、エラーが表示されてしまいます。
myReader は、コンストラクタではなくてインスタンスですから直接new を使うことはできません。
BufferedReader のインスタンスメソッドreadLine は、一行を読み込んでString を返すメソッドです。
それぞれのAPIドキュメントをご覧下さい。

投稿日時 - 2006-08-28 02:42:44

お礼

インスタンスですね^^;
非常に基本に忠実なアドバイスで感謝感激です。

投稿日時 - 2006-09-06 20:27:31

あなたにオススメの質問