• ベストアンサー

入出力について

下記のソースコードで、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を初めて間もなく、質問の内容がわかりづらいと 思われます。入出力について理解するのに苦労して おりますが、何卒ご教授の程お願い致します。

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

  • ベストアンサー
  • tachiwa
  • ベストアンサー率34% (25/73)
回答No.1

(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(); と考えると理解しやすいかもしれません。

KGM
質問者

お礼

返信が遅れて申し訳けありません。 すごくわかりやすく、マスターできました^^ (1)のオブジェクトを二つにわける方法は 助かりました。。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>「new」が二つもついていますが、何故二つもつける必要があるのでしょうか。 new コンストラクタ で、新しいオブジェクト(インスタンス)を作成しますので、 作成するそれぞれのクラスでnew することが必要です。 >String myString = new myReader.readLine(); >としてたら、エラーが表示されてしまいます。 myReader は、コンストラクタではなくてインスタンスですから直接new を使うことはできません。 BufferedReader のインスタンスメソッドreadLine は、一行を読み込んでString を返すメソッドです。 それぞれのAPIドキュメントをご覧下さい。

KGM
質問者

お礼

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

関連するQ&A

専門家に質問してみよう