public static String hero() {
Scanner scanner = new Scanner(System.in);
System.out.println("Which hero will you play as: Wizard, Elf or Dwarf?");
heroType = scanner.nextLine();
if (heroType.equalsIgnoreCase("wizard") || heroType.equalsIgnoreCase("elf") || heroType.equalsIgnoreCase("dwarf")){
//code
return heroType;
}
else {
System.out.println("This character is not recognised, please choose from Wizard, Elf or Dwarf.");
hero();
}
}
3つのオプションの1つが選択されている場合にのみ、このメソッドでheroTypeを返すようにします。そうでない場合は、メソッドを再度呼び出す必要があります。しかし、if文の外側にはreturn文がないので、コンパイラエラーが発生します。最後にreturn文を書くことの問題は、mainメソッドが "String h = hero();" "h"は他のメソッドに渡されますが、ユーザーが最初にウィザードのエルフまたはドワーフ以外のものを選択し、それを修正すると、最初にスキャナからの元の誤った値が格納されます。特定のことが起こった場合にのみ値を返すことはできますか?
最終的に正しい値を返す必要があり(最終的にはメソッドが呼び出されるたびに)、最終的には戻り値が返されるため、ユーザーが最終的に値を返さなくてはなりません。
ありがとうございます。しかし、「ヒーローを返す」とは何ですか?実際には? –
@JohnSmithあなたはウェルメイです。すべての "ヒーロー"メソッドの再帰呼び出しの最終的な戻り値を返します。 –
そして 'else'を削除してください。 'if'に 'return'があるとき、すべてが' else'です – Bohemian