- ベストアンサー
二次元配列について
二次元配列を使用して三択クイズを作ろうとしています。 画面イメージ: 問1 りんごは何色? 1.黄色 2.青色 3.赤色 答入力>3 正解。 問2 ミカンは何色? 1.オレンジ色 2.紫色 3.赤色 答入力>2 不正解。正解は1。 ----------------------------------------------- これをプログラムにしてみると、 int tbl[][] = new int[2][5]; tbl[][]={{"りんごは何色?","1.黄色","2.青色","3.赤色",3}, {"ミカンは何色?","オレンジ色","紫色","赤色",1} }; for(int i=0;i < 1 ;i++) { System.out.println(tbl[i][0]); System.out.println(tbl[i][1]); System.out.println(tbl[i][2]); System.out.println(tbl[i][3]); System.out.print("答入力ー>"); String str = br.readLine(); int name = Integer.parseInt(str); if(name == tbl[i][4]) { System.out.print("正解です。"); } else { System.out.print("不正解 答えは"+ tbl.length[i][4] +"です。"); } } ------------------------------------------------ for文とlengthを使用するという条件を踏まえて作ったのですが、エラーとして文ではありませんとでてさきに進めない状況です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 hiki_zero_さんは http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html をご存知ですか? このStringを見ると比較するときはこのメソッドを使用すればいいというのがわかるはずです。 ==ではStringの比較は正確にできません。 たぶんテキストエディタで書かれてDOSプロンプトでコンパイルしてるのではないでしょうか? 違ってたらごめんなさい。 eclipseというフリーツールなんかを使うと コードアシストもありますから便利ですよ。 検索サイトで「eclipse」を検索してみてください。 もしこれから先プログラミングなさるんでしたら 勉強にもなりますので、参考になさってください。 人に聞くのも良いですが、調べると覚えますよ! (といいつつ、私もよく人に聞きますが)
その他の回答 (3)
- lively-gon
- ベストアンサー率50% (48/96)
こんにちは > if(str == tbl[i][4]) > { (以下略) String同士の比較では "=" を使うことはできません. equalsやequalsIgnoreCaseを使います. > if(name == tbl[i][4]) のようなint同士だったら比較できるんですけどねぇ. ついうっかりやってしまいそうな感じですね.
- anmochi
- ベストアンサー率65% (1332/2045)
指摘が3つほどある。 1.intの配列を作ってそこに文字列を入れようとしているのはなぜだ? 2.配列に対して一度に値を代入できるのは、変数の宣言時のみ。(Javaではこれを配列の初期化と呼び、配列要素への値の代入とは区別している) 3.これは標準入力から文字を取得できるのか? brはどこでインスタンス化された? おそらくはnew BufferedReader(in)で作成されたものだろうが、どこだ? 今回とは関係ないので省いたのか? でだ。「文ではありません」エラーが発生するのは2.が原因だ。配列の初期化として行うか、1個1個えっちらおっちら代入していくしかない。
- sanaqa
- ベストアンサー率30% (13/42)
こんばんわ。 これが根本的原因かはわかりませんが、まず気づいたことを。。。 int tbl[][] = new int[2][5]; tbl[][]={{"りんごは何色?","1.黄色","2.青色","3.赤色",3}, {"ミカンは何色?","オレンジ色","紫色","赤色",1} }; int型のtbl[][]を宣言してるのに "りんごは何色?" String型入れてませんか? tbl[][]はStringでいいと思います。 if(name == tbl[i][4]) もnameをStringにして equalsで比較したらいかがですか? java知識が私も浅いので見当違いならごめんなさい。
補足
tbl[][]はStringでまず一つ目クリアーしました。 次に、 if(str == tbl[i][4]) { System.out.print("正解です。"); } else { System.out.print("不正解 答えは"+ tbl[i][4] +"です。"); } のようにかえて実行した場合 通ることには通るのですが、 正解の数字を入力しても不正解になってしまいます。 例えば、 答>2 不正解。正解は2です。 となります。