- 締切済み
文字列の配列の比較
こんにちは。タイトルどおり簡単な質問なのですが、どうしても確認したいのでお願いします。 とあるメソッドで、2次元配列の中にいくつか大文字のOが入ってるのですが、与えられた配列にOがあればtrueを返し、なければfalseを返します。 public boolean cellAt(int row, int col){ if(space[row][col].equals("O")) return true; else return false; } rowとcolはテストメソッドから値を受け取ります。 これでプログラム自体は動くのですが、WebCatという自動的に採点するものがあるのですが、それによるとエラーがでてしまいます・・・。 どこが違うのかは教えてくれないのですが・・・。 上で間違っているとすれば、文字列の比較くらいしかないんじゃないかと思うのですが、 space[row][col].equals("O") これで比較できますよね? 他のを調べて、if (Arrays.equals(space[row][col], "O"))これを試してもみたのですが、赤線が出てしまって無理でした。 どなたか宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
そのWebCatて何者よ。 そもそもそのWebCatが間違っている て可能性はないの? ちなみにそのロジックだけど 私ならもっとシンプルに public boolean cellAt(int row, int col){ return "O".equals(space[row][col]); } て書くわ。 ちなみに Arrays.equals は使い方が間違っているわよ。 使うならbinarySearchの方ね。
- ProKaseifu
- ベストアンサー率51% (98/192)
どんなエラーが発生していますか? 受け渡すデータは問題ありませんか? 質問者さんがどのくらいのレベルかわからないのですが、受け渡すデータがnullとか配列のインデックス超えてるとか初心者的なミスってことはないですよね?(「当然」受け渡すデータの中身の確認はしているとは思いますけど)
補足
JAVAは始めてまだ1月の初心者です 受け渡しのデータは問題なくできています。全て確認済みです。 結局どこが悪いのかわからず、プログラムをもう一度全部組んで一つ一つ確認していったのですが、 どうやらこのWebCatというのが独特の要求をしていたようで、それを満たしてないとエラーを起こす、というものでした・・・ お騒がせいたしました。ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
はれ? space の型はなんですか? こんなのなら return 1個だけでいいような気もする. しかし, 「どこが違うか教えてくれない」って, なんか使えないシステムだなぁ....
補足
spaceはprivate String[][] space;と定義しています。 比較がダメなのかなぁと思いStringをcharに変えて if (space[row][col]=='o') とやったんですけど、やはり結果は同じでした・・・
- ESE_SE
- ベストアンサー率34% (157/458)
なんだか微妙に気持ちの悪いコードですね・・・。 ・Return行が分岐している ・if文が括られていない 当たりが何とも。 一度Javaの基本に立ち返って書き直してみては? ・boolean blTemp; を宣言 ・if文、条件文以下の内容は{}で括り、各条件でblTempに値を格納 ・最後にreturn blTemp;とする
補足
返答ありがとうございます。つまりこのように、ということでしょうか。 public boolean cellAt(int row, int col){ boolean bltemp; if (space[row][col]=='o'){ bltemp = true; }else{ bltemp = false; } return bltemp; } (文字列をキャラクターに変えました) しかし、これでも結果は同じでした・・・。
補足
ずっとこのWebCatに悩まされていました・・・。これが独自にいくつかの要求をしてきていたため、たとえプログラムが動いてもエラーを返す、というものでした。 詳細を表示してくれないので物凄くわかりづらく時間を無駄にしてしまいました。 お騒がせいたしました。ありがとうございます。 追伸) やはりArrays.equalsは間違っていますか・・・。binarySearch調べてみます。ありがとうございました!