- ベストアンサー
java プログラミングについて
独学でjavaに挑戦中ですが、書店で購入した本のソースプログラムを少し変えたいのですが、ご教授をお願いします。数当てゲームのプログラムで、一つの設問を正解すると終了するゲームですが、複数の設問を設定したいのです、質問がうまく伝わるか不安ですがよろしくお願いします、プログラムを少しだけ書いておきます。 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String str = "こんにちは"; /*質問箇所*/ String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力:"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str.equals(str2)){ System.out.println("正解です!"); break; }
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>初期化子が不正、のエラー 単純にソースを写し間違えたのでしょう。 手打ちではなく、コピーで写してみて下さい。 あなたの意図する動きになっているはずです。 以下、BULUEPIXIYさんのソースに説明をつけます。 import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { // 正解を問題数文用意 String[] str = { "おはよう", "こんにちは", "こんばんわ" }; String str2; // ユーザの入力を入れる変数 // 入力を読み込むバッファ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); // 質問→回答入力→判定 を繰り返す // ループ一度目は"おはよう"が正解 ※ループ1 for (int i = 0; i < str.length; i++) { System.out.println("答えは何かのあいさつです。"); // 正解するまで繰り返し ※ループ2 for (;;) { System.out.println("\n入力:"); str2 = br.readLine(); // ユーザの入力を読み込む System.out.println("入力文字列の長さ:" + str2.length()); if (str[i].equals(str2)) { //正解の文字列と等しいか判定。str[i]はループ1の一度目は"おはよう" System.out.println("正解です!"); break; // 正解だった場合に、ループ2を終了 } } } } }
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
>初期化子が不正です、のエラーが出ました う~ん、ごめんなさい。 ウチではエラーにならないし、文法的にも正しいと思われるので、 なぜ、そういうエラーになるかはわかりません。 >複数を一つずつ正解していく方法を作りたいです 一応そういう風にはなっています。 勘違いだったらごめんなさい。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
import java.io.*; class Mojiretuate { public static void main(String[] args) throws IOException { String[] str = {"おはよう","こんにちは","こんばんわ"}; String str2; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("文字列当てゲームです。"); for(int i=0;i<str.length;i++){ System.out.println("答えは何かのあいさつです。"); for(;;){ System.out.println("\n入力:"); str2 = br.readLine(); System.out.println("入力文字列の長さ:" + str2.length()); if(str[i].equals(str2)){ System.out.println("正解です!"); break; } } } }}
お礼
BLUEPIXY さん早速ご回答有難うございます。早速、実行して見ましたが、初期化子が不正です、のエラーが出ました。文字列の問題ですので正解の文字列が幾つもあるのは、素人の考えですが、違うような気がします。どうも、私の問いが伝わっていないみたいです。今回の問題は”こんにちは”が入力されると正解でbreakされます。お問い合わせは、例えば、おはよう、こんばんは、など複数を一つずつ正解していく方法を作りたいです。宜しくご指導をお願いします。
お礼
BLUEPIXY さん、本当に有難うございました、再度新規に書き直して実行しました所、お陰で成功しました。 次に(if)を使って不正解なら"間違っています"を表示出来るように書き加えたいと思います。これからもご指導お願いします。