• 締切済み

java return文を指定できません。

javaプログラミングのコンパイルエラーで、return文を指定できません。 を出てしまいます。いろんなことを試してのですがエラーを解決することができません。このエラーが出る原因として考えられることがあればどんな 些細なことでもかまいませんのでぜひ教えてください。お願いします。

みんなの回答

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.4

#1,2です > しかし構文上forを抜けた後のreturn文に何を返していいのかが分かりません。> 何か考えられることはありますか?何でもいいのでぜひ意見をお願いします。 このfor文は全てのカードの中から条件に合うものを返す という処理になっているようですが、 for文を抜けてしまうということは、条件に合うものが無かったということになります。 よって返す値は -1 などが妥当ではないでしょうか。 当然呼び出し元では -1かどうか?という判定処理を入れてください。 それと別件のアドバイスになりますが、if文の後中カッコ{}で括らないで処理を書いてますよね? これは構文的には正しいのですが、マナー的にはあまりよくありません。 後で修正等した際に括弧を書き忘れて違った処理になってしまう場合があるからです。 なので、処理が1行しかなくてもちゃんと括弧を書くのが良いでしょう。

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

このソースで、「return 文が指定されていません。」ではなく「return 文が指定できません。」というメッセージが出たのだとしたら、他の部分に問題がある気がします。 (括弧の数が合わないなど) 他にもエラーメッセージは出ていないですか? 出ていたら、他のエラーを解決すればこのエラーも変わる可能性があります。 *同一内容を複数に分けて質問をすると、規則違反ということで削除されてしまいますよ。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.2

#1です。 まず補足にあったソースをコンパイルしてみたところ(もちろんそのままではありませんが)  「return 文が指定されていません。」 というエラーが出ました。 これではなく  「return 文が指定できません。」 なんですよね? このソースでおかしいのは以下の2点かと思いますので、その辺を見直してみてはいかがでしょう。 そもそもこのfor文は複数回繰り返されることなく、必ず1回目で終わってしまいますが、これは? また、人間の見た目上for文を抜けることはないですが、構文上forを抜けた後にもreturn文が必要です。 ※なんかまとまりない文章になってしまってスイマセン

noname#22319
質問者

お礼

大変参考になりました。 また助けていただくことになるかと思いますので そのときはまたよろしくお願いします。 本当にありがとうございました。

noname#22319
質問者

補足

matsuhiraです。回答ありがとうございます。 指摘してもらったことを受けて修正してみたところエラーメッセージは消えました。しかし構文上forを抜けた後のreturn文に何を返していいのかが分かりません。何か考えられることはありますか?何でもいいのでぜひ意見をお願いします。 < ソース > int getIndex(TrumpCard card) { for(int i=0; i<52; i++) { int j = myCards[52].compareStatus(card); if(j == TrumpCard.EQUIVALENT) return i; } return ; } よく分からない説明でごめんなさい。 ソース全体を貼りたいのですが量が多すぎて貼れません。 何か方法があれば教えてください。 足りない部分があれば教えてください。

  • asahina02
  • ベストアンサー率47% (95/202)
回答No.1

実際に出力されているエラーメッセージはなんでしょう? とりあえず考えられるのは関数がvoid型だったりinterfaceクラスになってたりというあたりでしょうか? また、実際にエラーが発生しているソース(一部でも可かも)を書かれると解決法もより的確にもらえると思います。 当然そのまま書くことは出来ないと思うので、具体的な処理部分を消したり、 クラス、関数名等は変更する必要がありますが。

noname#22319
質問者

補足

エラーメッセージは" return文を指定できません "です。 ソースは int getIndex(TrumpCard card){ for(int i=0; i<52; i++){ int j = myCards[i].compareStatus(card); return i; } } こうゆう感じです。 クラスNormalTrumpPackがあり、メソッドとしてint getIndex(TrumpCard card)を持ちます。このint getIndex()にエラーが出ます。クラスNormalTrumpPackは抽象クラスTrumpPackを親に持ちます。 とこういった感じのソースなのですが分かりますか。 分かりにくければ指摘お願いします。