C#与bool和DayOfWeek的初学者练习

时间:2015-04-02 08:16:28

标签: c#

我尝试进行以下练习,但我不确定我是否做了所需要的。你能看看我的代码是否正确或是否缺少某些东西?

此外,我想知道是否需要(或如何做)将DateTime.Now.DayOfWeek与变量isVacation一起使用,这样程序可以看到我们得到了哪一天,并说我们是否入睡。我玩了一下,但我没有成功。

练习:如果工作日是工作日,则参数工作日为真,如果我们正在休假,则参数休假为真。

如果不是工作日或者我们正在度假,我们会睡觉。

sleepIn(false,false) - >真

sleepIn(true,false) - >假

sleepIn(false,true) - >真

public bool CanSleepIn(bool isWeekday, bool isVacation) {}

我的代码:

static void Main(string[] args)
  {  
    CanSleepIn(true, false);
    Console.WriteLine("Do we sleep in today?{0}", CanSleepIn(false, false));
    Console.WriteLine("Do we sleep in today?{0}",CanSleepIn(true,false));
    Console.WriteLine("Do we sleep in today?{0}",CanSleepIn(false,true));
    Console.WriteLine("Do we sleep in today?{0}", CanSleepIn(true, true));
    Console.ReadLine();   
  }
  public static bool CanSleepIn(bool isWeekday, bool isVacation)
  {
    if (isWeekday == false && isVacation == false)
        return true;
    else if (isWeekday == true && isVacation == false)
        return false;
    else
        return true;   
   }

感谢您的帮助,我希望能够提出这样的问题。

如果没有,只是有人让我知道:)。

3 个答案:

答案 0 :(得分:1)

您可以按如下方式缩短CanSleepIn方法:

public static bool CanSleepIn(bool isWeekday, bool isVacation)
{
    return !isWeekday || isVacation;
}

为什么呢?如果不是工作日或您正在度假,您可以入住。在数学意义上,OR并不是唯一的,因此它也是一个工作日和你正在度假的条件。

话虽如此,您可以按如下方式更改对方法的调用:

bool isWeekend = (DateTime.Now.DayOfWeek == DayOfWeek.Saturday ||
                  DateTime.Now.DayOfWeek == DayOfWeek.Sunday);

bool canSleepIn1 = CanSleepIn(!isWeekend, true);
bool canSleepIn2 = CanSleepIn(!isWeekend, false);

如果当前日期是星期六或星期日,则isWeekend变量为true。我们将此作为!isWeekend传递,因为您的方法要求我们告诉它是否为工作日,定义为not weekend

答案 1 :(得分:1)

只需将您的英语短语翻译成代码:

  

如果不是工作日或者我们正在度假,我们会入睡。

如果句子的其余部分中指定的条件是CanSleepIn"不是工作日"我们可以睡觉意味着true必须返回true可以写成!isWeekday,"或"是||,"度假"只是isVacation

所以您的CanSleepIn变为:

public static bool CanSleepIn(bool isWeekday, bool isVacation)
{
    return !isWeekday || isVacation; 
}

答案 2 :(得分:0)

编码要求:

return !isWeekday || isVacation;

但我建议使用https://codereview.stackexchange.com/来解决这类问题。