MainメソッドとControllerクラスの2つのバリデーションで問題が発生しています。C#オブジェクトがnullの場合にループを検証する方法を作成する
これは、メインの静的メソッドです。基本的に私は、 "従業員"のIDを入力するようにユーザーに依頼し、IDはEmployeeというクラスのプロパティです。その従業員が存在するかどうかを示すメッセージを表示します。すでに作成された複数のEmployeeオブジェクトがあるとします。私はそれがwhileループの一種だと知っていますが、私はそれを正しく理解できません。
コントローラクラス内のメソッドは正しいので、何も変更する必要はありません。基本的にIDを受け取り、Employeeオブジェクトが存在しない場合はnullを返し、存在する場合はオブジェクトを返します。私はその従業員が存在しない場合にそのnullを取る必要があり、彼がするまで正しいIDを入力するようにユーザーに依頼し続けるループを作成し、ループが終了します。ありがとう、申し訳ありませんが正しく説明しなかった場合。
public static void mymethod()
{
Console.WriteLine("Please enter your Employee ID: ");
int ID = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("----------------------------");
Employee employee = controllerclass.findemployee(ID);
int i = 0;
bool flag = false;
while (!flag)
{
if (!flag)
{
if (ID != null)
{
Console.WriteLine("The employee exists");
flag = true;
}
else
{
Console.WriteLine("Please enter a valid ID");
}
}
i++;
}
コントローラクラス内のメソッドは正しいので、何も変更する必要はありません。基本的にIDを受け取り、Employeeオブジェクトが存在しない場合はnullを返し、存在する場合はオブジェクトを返します。私はその従業員が存在しない場合にそのnullを取る必要があり、彼がするまで正しいIDを入力するようにユーザーに依頼し続けるループを作成し、ループが終了します。しばらくは、それが少なくとも一度起こる確かめる行う
boolean flag = false;
do {
if(flag)
Console.WriteLine("Please enter a valid ID");
else
Console.WriteLine("Please enter your Employee ID: ");
try{
int ID = Convert.ToInt32(Console.ReadLine());
} catch (FormatException e){
Console.WriteLine("Please enter an integer");
flag = false;
continue;
}
employee = controllerclass.findemployee(ID);
flag = true;
} while (employee == null) //employee will be null if not found
Console.WriteLine("The employee exists");
:私は、正しく
IDはintなので、nullになることはありません。 – Harminder
良い点。私は質問者のコードに基づいています。私はそれを反映する答えを編集します。 – jimboweb
ありがとうございました@jimboweb、あなたのコードを取っていくつかのものを変更しました。 noobieを助ける時間をとってくれてありがとう。 – Gonzalo