• 締切済み

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を親に持ちます。 とこういった感じのソースなのですが分かりますか。 分かりにくければ指摘お願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • for,while文とreturn

    for文やwhile文の中にreturnは入れれない? 指定がないとコンパイルエラーがでますが どうしてでしょうか。

  • return文が指定されていませんと出てくる

    javaの、というかパソコンの超初心者です。 じゃんけんゲームを作るのに、変数「3」を入力したらループから出て終了してもらえるように下記の文のelse if ~を追記したところ、これまでコンパイルできていたのに You.java:24: エラー: return文が指定されていません } と出てきてしまいます。 return;やreturn true; 、false等入力したものの変わらず、何をどこに追記すればいいのかわからないままです。 とてつもなく初歩的な部分かと思いますがどなたかご教授いただけますでしょうか... import java.util.*; public class You extends Player { public Hand nextHand() { Scanner scanner = new Scanner(System.in); while (true) { System.out.print("何を出しますか? グー:0 チョキ:1 パー:2 終了:3 > "); try { int hand_number = Integer.parseInt(scanner.nextLine()); if (0 <= hand_number && hand_number <= 2) { return Hand.fromInt(hand_number); } else if (hand_number == 3){ System.out.println("終了します。"); break; } else { System.err.println("範囲外の数字が入力されています。"); } } catch (NumberFormatException e) { System.err.println("数字以外が入力されています"); } } } }

  • Java for文 ネストとreturn文

    Java でfor文, ネスト, return文を使って1~100を順番に10回足していく。構文が作成できません。 わかる方。お願いします。

  • Javaのプログラミング

    Javaのプログラミングを今日始めたのですが コンパイルの実行をする際 javac <ソースファイル名>を入力しコンパイルしたら エラーと出てしまいます 原因としては何が考えられるのでしょうか?

  • return文について質問

    以下は、あるJavaの参考書の問題を僕が解いてソースコードに起こしたものです。その際のエラーが出てしまうことについて、その原因を質問させていただきます。 package 第16章; public class 練習16_4_4 { public static void main(String[]arg){ double[]dt={55.1,23.0,168.8,25.6,33.1,101.5}; System.out.println(isOver100(dt)); } public static boolean isOver100(double[]a){ for(double x:a){ if(x>100.0){ return true; }else{ return false; } } } } 質問:『public static boolean isOver100(double[]a){』、ここの部分でエラーとして「このメソッドは型booleanの結果を戻す必要があります」と表示されます。何故ですか?だって、return文で型booleanであるtrueやfalse返してるのに、、 まったく原因わかりません。

    • ベストアンサー
    • Java
  • プログラミングの返り値戻り値は必ずreturn文と

    プログラミングの返り値戻り値は必ずreturn文とセットで使うんですか? returnがない時は返り値戻り値は使えないですか?

  • java for文について

    java test 3 テスト1 テスト2 テスト3 for文を使いコンパイル後の"3"の入力で 上記の結果にするにはどうすればいいのでしょう?

  • java for文プログラムについて

    java for文プログラムについて javaのfor文のプログラムにて 2つの数値をキーボード入力し入力値を+入力値とやっていきたいプログラムを組みたいのですがどんなプログラミングを行えばいいのでしょうか。 例えば入力が15 もうひとつの入力が20だとすれば15+16+17+18+19+20=105という計算を行いたいです プログラミング環境はeclipseです 分かる方教えてください。

  • java コンパイルエラー

    java コンパイルエラー java 初心者です。 簡単なプログラムを作りながら練習していたのですが、Exceptionクラスを継承して新しい例外を作る以下のプログラムで、コンパイルエラーとなり、解決できません。 class NewException extends Exception{ public NewException(){ super("エラー"); } } これを javac でコンパイルすると、 NewException.java:3: シンボルを見つけられません。 シンボル: コンストラクタ Exception(java.lang.String) 場所  : Exception の クラス super("エラー"); ^ エラー1個 と言われます。 これを読むと「Exception には String を引数にとるコンストラクタはないよ」と言われているように思えるのですが、そんなはずないのでは。。 もし原因がお分かりの方がいらしたら、ご教示いただけるとありがたいです。

    • ベストアンサー
    • Java
  • return文でもメソッドが止まらない?

    いつもお世話になっております。 深さ優先探索をスタックを使わずにJavaで実装したメソッドを書いたのですが なぜかメソッドを終わらせるreturn文まで到達しているようなのに (return直前にメッセージを表示させて到達していることを確認しました) それ以降も動き続けしかも挙動がめちゃくちゃになるという現象に悩まされています。 (かなり長くなってしまっているので実際のプログラムを記載するのは止めます) returnしたら必ずメソッドは処理を終えるものではないのでしょうか? 思い当たることとしたら、再帰呼び出しを使っているので一つメソッドの処理を終わらせても それを呼び出した側にまた処理が戻っているのかも?ぐらいとしか検討がつきません。 せめてreturnが機能しないことに再帰呼び出しが関係あるのかないのかを知りたいです。 完全にお手上げ状態なのでなにか対処法を知っている方、ぜひともよろしくお願いします。

    • ベストアンサー
    • Java