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

解決済みの質問

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;
} 

投稿日時 - 2005-07-01 23:16:48

QNo.1485876

暇なときに回答ください

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

>初期化子が不正、のエラー
単純にソースを写し間違えたのでしょう。
手打ちではなく、コピーで写してみて下さい。
あなたの意図する動きになっているはずです。



以下、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を終了
}
}
}
}
}

投稿日時 - 2005-07-03 12:10:52

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

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

回答(3)

ANo.2

>初期化子が不正です、のエラーが出ました
う~ん、ごめんなさい。
ウチではエラーにならないし、文法的にも正しいと思われるので、
なぜ、そういうエラーになるかはわかりません。

>複数を一つずつ正解していく方法を作りたいです
一応そういう風にはなっています。
勘違いだったらごめんなさい。

投稿日時 - 2005-07-03 01:29:05

お礼

BLUEPIXY さん、本当に有難うございました、再度新規に書き直して実行しました所、お陰で成功しました。
次に(if)を使って不正解なら"間違っています"を表示出来るように書き加えたいと思います。これからもご指導お願いします。

投稿日時 - 2005-07-03 11:57:46

ANo.1

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;
}
}
}
}}

投稿日時 - 2005-07-02 03:17:54

お礼

BLUEPIXY さん早速ご回答有難うございます。早速、実行して見ましたが、初期化子が不正です、のエラーが出ました。文字列の問題ですので正解の文字列が幾つもあるのは、素人の考えですが、違うような気がします。どうも、私の問いが伝わっていないみたいです。今回の問題は”こんにちは”が入力されると正解でbreakされます。お問い合わせは、例えば、おはよう、こんばんは、など複数を一つずつ正解していく方法を作りたいです。宜しくご指導をお願いします。

投稿日時 - 2005-07-02 22:24:38

あなたにオススメの質問