みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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("数字以外が入力されています");
}
}
}
}

投稿日時 - 2019-07-26 15:13:05

QNo.9639343

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

0/1/2が入力された場合、このメソッドは"return Hand.fromInt(hand_number);"で値を返しています。
同様に、3が入力されてこのメソッドを終了する場合にもreturn文で「何か」を返す必要があります。
修正方法の一案としては"break;"の部分を"return null;"と書き換えてください。ただし、nextHand()がnullを返した時の判定を、nextHand()を呼んでいる部分に追加しなければいけません。

投稿日時 - 2019-07-26 18:14:18

ANo.1

public Hand nextHand()
と書いて関数を定義しています。
これは Hand 型のデータを返す関数だと宣言しているので。宣言の次に書いてある { と対になる } の手前までに Hand 型のデータを返すreturn文が必要になります。

投稿日時 - 2019-07-26 16:38:52

あなたにオススメの質問