需要循环,只要用户需要它到C#就会重复

时间:2018-04-14 15:25:47

标签: c# loops

这是我的代码,我知道它很丑,但我很新,我想弄清楚如何保持循环重复直到用户完成,并选择退出。目的是输入员工姓名,工资率和工作小时数,将其保存到列表中,然后询问用户是否需要添加其他用户,或者是否编辑用户,或退出程序。

namespace ConsoleApp1
{
  class Program
  {
    static string Name()
    {
        string name;

        List<string> nameList = new List<string>();

        Console.Write("What is the employees name? ");
        name = Console.ReadLine();
        nameList.Add(name);

        return "";
    }

    private static int Numbers()
    {
        int hours;
        int pay;
        int payroll;

        List<int> payList = new List<int>();
        List<int> hoursList = new List<int>();

        Console.Write("What is the pay rate for the employee? ");
        pay = Convert.ToInt32(Console.ReadLine());
        payList.Add(pay);

        Console.Write("How many hours did the employee work? ");
        hours = Convert.ToInt32(Console.ReadLine());
        hoursList.Add(hours);

        payroll = pay * hours;
        Console.Write("Pay the employee: " + payroll);

        return pay;            
    }

    static void Main()
    {
        Name();
        Numbers();

        Console.Write("\nDo you need to add another employee? Y or N\n");
        string choice = Console.ReadLine();

        if (choice == "Y")
        {
            Name();
            Numbers();
            Console.Write("\nDo you need to add another employee? Y or N\n");
            choice = Console.ReadLine();
            if(choice == "N")
            {
                    Console.Write("\nDo you want to edit (E) an entry, or exit (X) the program? ");
                    string secondChoice = Console.ReadLine();
                    if (secondChoice == "X")
                    {
                        Environment.Exit(0);
                    }
                    if (secondChoice == "E")
                    {
                        Name();
                        Numbers();
                    }                    
            }
        }
        else
        {
            Console.Write("\nDo you want to edit (E) an entry, or exit (X) the program? ");
            string secondChoice = Console.ReadLine();
            if (secondChoice == "X")
            {
                Environment.Exit(0);
            }
            if(secondChoice == "E")
            {
                Name();
                Numbers();                        
            }
        }

        Console.ReadKey();


    }
 }
}

3 个答案:

答案 0 :(得分:2)

你所追求的是一个递归的while循环,其中有一些逻辑可以根据当前状态处理正确的问题。我们可以在这里给你一个直接的答案,但你真的需要先了解一些核心和简单的原则。

我建议您在https://www.youtube.com/playlist?list=PLrW43fNmjaQXhWOKalftye87ObZA-xNIJ

查看我的C#初学者视频

具体来说,这个视频有关While循环和复杂逻辑https://www.youtube.com/watch?v=a4g8JHX5jgg

的帮助

从那以后你应该能够回答你自己的问题

答案 1 :(得分:1)

首先,我建议你看看一些基本的循环教程,例如其中一个

但那里还有更多。

要直接回答您的问题,您可以使用以下结构:

namespace ConsoleApp1
{
  class Program
  {
    static void Main()
    {
      while(true) //loop forever
      {
        Console.WriteLine("do you want to (A)dd (E)dit or (X) Exit?");
        string choice = Console.ReadLine();
        if (choice == "A")
        {
          //Do add stuff here
        } 
        else if (choice == "E")
        {
          //Do edit stuff here
        } 
        else if (choice == "X")
        {
          break; //exit the loop
        }
        else
        {
          Console.WriteLine("unknown command");
        }
      }
    }
  }
}

你基本上进入了一个无限循环,用户总是会被问到相同的问题,这取决于他的回答你做了不同的事情。如果用户想退出,你只需要打破循环 而不是这样的if-else链,您可以使用switch语句。

答案 2 :(得分:1)

只需创建一个新的void,最后再次调用void 例如:

 static void Main(string args[]){
     Loop();
 }  

 private static void Loop(){
     //code...

    //in the end
    Loop();
 } 

除非你在另一个线程中执行,否则你不需要while循环。