• 締切済み

JSPで15ゲーム作る課題なんだけど・・・・

全部そろってクリア表示をさせたいのですが、完成判定がうまくできません。 どなたか助けて・・・ //完成判定 int cnt=1,k=0,clear=0; for(i = 0; i < ss.length; i++){ for(j = 0; j < ss[i].length; j++){ if(Integer.toString(cnt)==ss[i][j]){ k = 1; break; } cnt++; } if(k == 1){ break; } } ここに完成判定させるif文を書いていました・・・ どこがいけなくて、どこがたりないのでしょうか? ちなみに、if(Integer.toString(cnt)==ss[i][j]){ は、System.outすると機能していません。でも、コンパイルエラーにもなりません。

みんなの回答

  • auty
  • ベストアンサー率58% (284/486)
回答No.2

「15ゲーム」がどんなものか忘れていたので調べてみました。 全部順番に並んでたら、完成ですね。 そうすると、並んでいるすなわち一致すれば、そこまではOKということが分かります。 このときは次のチェックに行きます。 並んでいないものが見つかったらもうだめです。つまり未完成ということが分かりました。 ここでループを抜け出します。そしてその情報は、kにセットしています。 さて間違いですが、ifの判定で、「異なっていたら」としなければなりません。並んでいないものが見つかったということです。これには、否定の!を使って、 if( !Integer.toString(cnt).equals(ss[i][j]) ) { k = 1; break; } とします。また最後も if(clear == 1){ out.print("clear"); ではありませんね。 そうです。k==0 のときが完成したときです。

kontikuwa
質問者

お礼

返信おそくなりました>< 丁寧な解説ありがとうございます。 おかげ様で完成いたしまし。 もっと勉強してautyさんに近づけるようにがんばりたいと思います。

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

確か先日もこの問題がテーマとなっていましたが、 文字列の比較は、 Integer.toString(cnt)==ss[i][j] ではできません。==は、参照の比較です。 今回、両者は同じオブジェクトを参照しているわけではないので常にfalseとなります。 文字列の比較は、 Integer.toString(cnt).equals(ss[i][j]) で行ってください。 なお、==が成り立てば、equalsは成立しますが、逆は必ずしも成り立ちません。

kontikuwa
質問者

お礼

回答ありがとうございます。 ==をequalsに変えて  k = 1;  clear=1;  break;  } ・ ・ ・ if(clear == 1){ out.print("clear"); としても、out.printされないです・・・>< ほかに完成判定させるロジックはないでしょうか?

関連するQ&A