【发布时间】:2015-04-01 18:02:40
【问题描述】:
我正在用 c# 做一个练习来练习,但我不清楚我应该做什么以及如何做事。 (我还没有考虑作为编译器):( .
练习是这样设置的。
- 我们有两个孩子,a 和 b,以及参数 aSmile 和 bSmile 表明每个人是否都在微笑。
- 如果他们都在微笑,或者他们都没有微笑,我们就有麻烦了 微笑。
- 如果我们遇到麻烦,则返回 true。
- AreWeInTrouble(true, true) -> true
- AreWeInTrouble(false, false) -> 是的
- AreWeInTrouble(true, false) -> false
public bool AreWeInTrouble(bool aSmile, bool bSmile) {}
到目前为止我的代码:
public bool AreWeInTrouble(bool aSmile, bool bSmile)
{
if (aSmile == true && bSmile == true)
{
return true;
}
else if (aSmile == false && bSmile == false)
{
return true;
}
else
return false;
}
我已将此方法放在 Program.cs 中的 main 方法中,因此一旦程序启动,该方法就会被调用。
static void Main(string[] args)
{
AreWeInTrouble(aSmile, bSmile);
}
但是当我调用这个方法时,我得到一个错误,即当前内容中不存在 a 和 b 微笑。
所以我想问一下是否有人可以给我一些提示/技巧来解决这个练习。 我不确定如何从这里开始,但我想了解缺少的内容并重试。
谢谢大家的帮助!
【问题讨论】:
-
此时,
aSmile和bSmile是方法的参数,该方法需要传入一些变量... -
与您的问题无关,但作为提示,您也不需要“== true”。 aSmile 和 bSmile 已经是布尔值,所以你可以只做 "if (aSmile && bSmile)" 和 "if (!aSmile && !bSmile)"
-
另外,我认为你应该看看你的布尔代数课程:en.wikipedia.org/wiki/Exclusive_or Just
return !(aSmile ^ bSmile); -
虽然
!(aSmile ^ bSmile)在逻辑上是正确的,但aSmile == bSmile是AreWeInTrouble的最佳实现。 -
关于methods(尤其是方法参数与参数)的 MSDN 条目可能很有趣。 -- "方法定义指定了所需的任何参数的名称和类型。当调用代码调用方法时,它为每个参数提供称为参数的具体值。"
标签: c#