如何在c#中提供正确的信息之前重复?

时间:2017-07-31 03:30:38

标签: c#

我目前正在编写一个程序,我必须这样做 1)为用户提供一些选择:1。按名称搜索? 2.按出生日期搜索? 2)如果用户按名称选择搜索,请让他们输入名字然后给出输出 3)如果用户按出生日期选择搜索,请让他们以格式(MM / DD / YYYY)输出出生日期,然后给出输出。

如果验证失败或无法找到数据,我必须重复选项。 我正在努力重复选项的概念。非常感谢ANy的帮助。

到目前为止我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Week2Tutorial
{
class Program

    class Student
    { 
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string Lastname { get; set; }
        public DateTime DOB { get; set; }
        public string Gender { get; set; }


    }


    static void Main(string[] args)
    {

        var students = new List<Student>()
        {
            new Student() { Id = 1,FirstName = "Min Chul",Lastname = "Shin",DOB = new DateTime(2010,01,01),Gender = "Male"},
            new Student() { Id = 2,FirstName = "Nicky", Lastname = "Lauren", DOB = new DateTime(2009, 01, 01), Gender = "Female"},
            new Student() { Id = 3, FirstName = "Amy", Lastname = "Park", DOB = new DateTime(2008, 01, 01), Gender = "Female" },
            new Student() { Id = 4, FirstName = "Aurelie", Lastname = "Adair", DOB = new DateTime(2007, 01, 01), Gender = "Female" }


        };


        //foreach (var x in students)
        //{
        //    Console.WriteLine("Id = {0}, FirstName = {1}, Lastname = {2}, DOB = {3}, Gender = {4}",x.Id,x.FirstName,x.Lastname,x.DOB,x.Gender);
        //}


        Console.WriteLine(" Please Choose one of the options:");
        Console.WriteLine("1> Search by first name");
        Console.WriteLine("2> Search by date of birth");
        switch ( Convert.ToInt32(Console.ReadLine()))
        {
            case 1:
                Console.WriteLine("You choose:1");
                Console.WriteLine("Type your first name:");
                var a = Console.ReadLine();

                var case1 = students.Where(x=>x.FirstName==a);

                if (case1.Count()!=0)
                {
                    Console.WriteLine("Found! Here are the details:");
                    foreach (var x in case1)
                    {
                        Console.WriteLine("Name: {0}{1} D.O.B:{2} and Gender{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }


                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                }
                break;

            case 2:
                Console.WriteLine("You choose:2");
                Console.WriteLine("Enter your Date of Birth in format MM/DD/YYYY:");

                var b = DateTime.Parse(Console.ReadLine());
                //Console.WriteLine(b);
                //Console.ReadLine();

                    var case2 = students.Where(x => x.DOB == b);
                if (case2.Count() != 0)
                {
                    Console.WriteLine("Found! Here are your details");
                    foreach (var x in case2)
                    {
                        Console.WriteLine("Name:{0} {1} DOB:{2} Gender:{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }
                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                } 
                break;
                default:
                Console.WriteLine("Please enter the valid option");
                break;

        }

    }
}

}

2 个答案:

答案 0 :(得分:1)

可以完成do while循环这里是do while Loop

的一般语法
do {
    code to be executed;
} while (condition is true);

什么是while循环它是一个无限循环,执行代码直到条件为真。 在你的情况下,我们正在采用一个新的变量临时温度,这意味着零意味着没有 结果如果你的任何一个switch case变为true并根据用户的搜索查询找到结果,那么结果的计数将被复制到temp变量,现在temp不再有零值意味着condition为false意味着代码不会再次执行

你只需要开始一个无限循环,直到条件为真

do{
var temp=0; ///Temporary variable to check the result count
//intially variable b will be zero because INtially result count is zero

  Console.WriteLine(" Please Choose one of the options:");
        Console.WriteLine("1> Search by first name");
        Console.WriteLine("2> Search by date of birth");
        switch ( Convert.ToInt32(Console.ReadLine()))
        {
            case 1:
                Console.WriteLine("You choose:1");
                Console.WriteLine("Type your first name:");
                var a = Console.ReadLine();

                var case1 = students.Where(x=>x.FirstName==a);
                   temp=case1.Count();    //Getting result count in another variable
                if (case1.Count()!=0)
                {
                    Console.WriteLine("Found! Here are the details:");
                    foreach (var x in case1)
                    {
                        Console.WriteLine("Name: {0}{1} D.O.B:{2} and Gender{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }


                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                }
                break;

            case 2:
                Console.WriteLine("You choose:2");
                Console.WriteLine("Enter your Date of Birth in format MM/DD/YYYY:");

                var b = DateTime.Parse(Console.ReadLine());
                //Console.WriteLine(b);
                //Console.ReadLine();


var case2 = students.Where(x => x.DOB == b);
temp=case2.Count();    //Getting result count in another variable
                if (case2.Count() != 0)
                {
                    Console.WriteLine("Found! Here are your details");
                    foreach (var x in case2)
                    {
                        Console.WriteLine("Name:{0} {1} DOB:{2} Gender:{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }
                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                } 
                break;
                default:
                Console.WriteLine("Please enter the valid option");
                break;

        }
}while(temp==0);   ////Endless Loop while result is zero

intially temp等于零表示结果计数为零 所以它会再次启动循环但是如果有任何结果 这意味着temp不等于零,它不会执行代码

答案 1 :(得分:0)

只需使用while循环。

示例来自:https://www.dotnetperls.com/console-readline

using System;

class Program
{
    static void Main()
    {
        while (true) // Loop indefinitely
        {
            Console.WriteLine("Enter input:"); // Prompt
            string line = Console.ReadLine(); // Get string from user
            if (line == "exit") // Check string
            {
                break;
            }
            Console.Write("You typed "); // Report output
            Console.Write(line.Length);
            Console.WriteLine(" character(s)");
        }
    }
}