• ベストアンサー

String型の変数を使った問題

すごく簡単なプログラムのはずで、初歩的な質問で申し訳ありませんが、教えていただければと思います。 問題: 以下の場合の処理を行うプログラムを作成せよ。 (1)String型の変数を作成し、苗字を格納する。(値は直接書き込む) (2)String型の変数を作成し、名前を格納する。(値は直接書き込む) (3)(1)で作成した苗字を持つ変数と、(2)で作成した名前を持つ変数を結合して出力。 (4)「苗字は'((1)で作成した変数の値)'です。名前は'((2)で作成した変数の値)'です。」と出力。 出力結果: C:\>java Name いわたてつお 苗字は'いわた'です。名前は'てつお'です。 C:\> 上記のプログラムを作成しようとしたのですが・・・ import java.io.*; class Name { public static void main(String[] args)throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); String name1 = str1; String str2 = br.readLine(); String name2 = str2; System.out.println(name1 + name2); System.out.println("苗字は\'" + name1 + "\'です。名前は\'" + name2 + "\'です。"); } } ↑これではいくら変数を2つ作成しても、書き込んだ文字が全て 苗字の変数に格納されてしまってちゃんと出力出来ないという事は 分かるのですが、どうやったらちゃんと苗字と名前に分かれて 出力されるのか分からないので、教えてください。 なんとなく文法的にも間違っている気が・・・ ホント初歩的な質問ですみません!

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

  • ベストアンサー
  • kztk
  • ベストアンサー率53% (59/110)
回答No.2

問題文からも出力結果からも、苗字と名前を実行時に入力する仕様であるとは、私には読み取れないのですが・・・。 つまりこれだけ: class Name { public static void main(String[] args) { String name1 = "いわた"; String name2 = "てつお"; System.out.println(name1 + name2); System.out.println("苗字は'" + name1 + "'です。名前は'" + name2 + "'です。"); } }

j-dean
質問者

お礼

あ・・・私は何を勘違いしてたんだろう。 ずっとキーボードから入力した文字を出力してって問題ばかり やっていたので、「直接プログラムに書き込む」という問題文を見て とっさに実行時コマンドプロンプトに直接書き込んで出力するんだと ばかり思ってました。 深読みしすぎというか・・・単なるケアレスミスでしたね。 反省・・・ ありがとうございました!

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • marl-bo
  • ベストアンサー率66% (2/3)
回答No.1

import java.io.*; class Name {  ///////////////////////////  // in : 文字列  // out : 文字配列  // 処理: 文字列を受け取り、" "(半角スペース)前を苗字  //    後を名前にする  public static String[] strsep(String str){   String Ret[] = new String[2];   //半角スペース   String sep = " ";   //全角スペース   //String sep = " ";   int pos = str.indexOf(sep);   if ( pos != -1){    Ret[0] = str.substring(0, pos);    Ret[1] = str.substring(pos+1, str.length());   }   return Ret;  }  public static void main(String[] args)throws IOException  {   BufferedReader br =     new BufferedReader(new InputStreamReader(System.in));   String str1 = br.readLine();   ///////////////////////////////////   //書き換え部分   String[] strarray = strsep(str1);   String name1 = strarray[0];   String name2 = strarray[1];   ///////////////////////////////////   System.out.println(name1 + name2);   System.out.println("苗字は\'" + name1 + "\'です。名前は\'" + name2 + "\'です。");  } } ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 苗字と名前の間に ”半角スペース”をいれることで 判断させています。 スペースを入れないでやる方法が思いつかなかったので 参考までに。

すると、全ての回答が全文表示されます。

関連するQ&A