私はユーザーの入力を確認するメソッドを開発しようとしています。は入力を返します。戻りエラー:すべてのコードパスが値を返すわけではありません。
これは私が何をしたいです:
- ユーザは、入力がロジックを満たしている場合、再度関数を呼び出す他にその値を返す入力
- の入力
- チェック値を入力します。
これは私が欲しいもの本当にですが、コンパイラはそのnot all code paths return a value
を述べている:
public static int UserInput(){
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4){
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4) UserInput();
} else{
return input;
}
}
しかし、これはコンパイラを満たす次のコードです。
public static int UserInput()
{
int input = int.Parse(Console.ReadLine());
if (input < 1 || input > 4)
{
Console.Write("Invalid Selection. Enter a valid Number (1,2,3 or 4): ");
if (input < 1 || input > 4)
{
UserInput();
return -1; // Never reached, but must be put in to satisfy syntax of C#
}
return input; // Never reached, but must be put in to satisfy syntax of C#
}
else
{
return input;
}
}
この種の作品は、私は奇妙な結果を得る。ユーザーがinput
に最初に1,2,3または4のいずれかを入力した場合(つまり、if
の文がfalse
と評価された場合)、返された入力はユーザーが入力したものです。しかし、ユーザーは、プログラムは次の操作を行います、有効な数値を入力しその後、 1,2,3または4 なかった値を入力した場合:
- リターン入力を、
- 子ifステートメントにジャンプし、UserInput()を実行します。
- -1を返します。
非常に感謝して、関数を返すことはできませんでした。 – dgamma3
@ dgamma3はい、これは以下のような方法で切り捨てられます:int returnValue = UserInput(); return returnValue; .....これは本質的に何をしているのかです。関数から返された値を返すだけの関数を返すわけではありません。 –