2017-02-03 53 views
-2

这里是我的代码:C#如何让我的计划,通过多次运行时没有设定量

class Main 
    { 
     public string Name() 
     { 
     string employee = ""; 

      while (employee == "") 
      { 
      try 
      { 
       Console.Write("Please enter employee name: "); 
       employee = Console.ReadLine(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
     return employee; 

    } 

    public float hoursWorked() 
    { 
     string yesno = ""; 
     List<float> hWorked = new List<float>(); 
     float hours = 0; 

     for (int i = 0; yesno == "" || yesno =="Yes"|| yesno== "yes"; i++) 
     { 
      try 
      { 
       Console.Write("Please enter hours worked: "); 
       hours = float.Parse(Console.ReadLine()); 

       if (hours > 0) 
       { 
        Console.WriteLine("Hours added"); 
        hWorked.Add(hours); 
       } 
       else 
       { 
        Console.WriteLine("Please enter valid hours"); 
       } 

       Console.Write("Do you want to add more hours? Please state Yes or No: "); 
       yesno = Console.ReadLine(); 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(e.Message); 
      } 
     } 
     return hWorked.Sum(); 

    } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     Main a = new Main(); 

     string name = a.Name(); 
     float hWorked = a.hoursWorked(); 
     string more = ""; 

     Console.WriteLine("Name: {0}\nHours worked: {1}", name, hWorked); 

     Console.Write("Add another employee?: "); 
     more = Console.ReadLine(); 

     if (more == "Yes" || more == "yes") 
     { 
      Main b = new Main(); 

      string name1 = a.Name(); 
      float hWorked1 = a.hoursWorked() 

      Console.WriteLine("Name: {0}\nHours worked: {1}", name, hWorked1); 
      Console.ReadLine(); 
     } 
     else 
     { 
      Console.ReadLine(); 
     } 



    } 
} 

我想要做的就是让用户回答是或否的问题“添加其他员工?:“我可以通过使用底部看到的if语句来做到这一点。我如何在不预设他们可以添加其他员工的次数的情况下允许这样做?

回答

2

的代码是很土气。我改变了你的hoursWorked方法只是一个小不得到你所需要的:

​​

我没有改变任何东西。你可以彻底改善这种逻辑。

+0

谢谢,非常感谢。我很新,所以我的代码会很糟糕:( –

+0

我完全理解,我建议你通过一本书或视频教程,我希望这将是非常有帮助的 – Teja

+0

是的,我目前正在经历一个初学者的书,我只是试图做它向我展示的东西,然后添加我自己的东西 –

-1

我认为问题的一部分是,您正在将程序流与您正在尝试的工作混合在一起。我做了一个快速版本,它显示了在使用Employee类封装所工作的小时的名称和列表时,由Main控制的程序流。

请注意,我还通过查找空字符串以确定何时要停止输入数据来简化输入,但如果需要,可以轻松更改以使用您的yes/no响应。

static void Main(string[] args) 
    { 
     // Add new employees 
     while(true) 
     { 
      Console.WriteLine("Please enter employee name: "); 
      var employeeName = Console.ReadLine(); 

      if (string.IsNullOrWhiteSpace(employeeName)) 
       break; 

      var employee = new Employee(employeeName); 

      // Add employee hours 
      while(true) 
      { 
       Console.WriteLine("Please enter hours worked: "); 
       var inputHours = Console.ReadLine(); 

       if (string.IsNullOrWhiteSpace(inputHours)) 
       { 
        Console.WriteLine("Name: {0}\nHours worked: {1}", employee.Name, employee.HoursWorked.Sum()); 
        break; 
       } 

       var hours = float.Parse(inputHours); 

       if (hours > 0) 
       { 
        employee.HoursWorked.Add(hours); 
        Console.WriteLine("Hours added"); 
       } 
       else 
       { 
        Console.WriteLine("Please enter valid hours"); 
       } 
      } 
     } 

    } 

    public class Employee 
    { 
     private readonly string _name; 

     public Employee(string name) 
     { 
      _name = name; 
      HoursWorked = new List<float>(); 
     } 

     public string Name 
     { 
      get { return this._name; } 
     } 

     public List<float> HoursWorked { get; set; } 
    } 
+0

Downvoted,但没有评论为什么,请注意,我并没有宣传这是理想的解决方案。到已经存在的代码作为学习经验。 – Freakshow

相关问题