我正在练习c#练习,但我不清楚我应该做什么以及如何做事。 (我还没考虑编译器):(。
练习设置如下。
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 Smile在当前内容中不存在。
所以我想问一下是否有人可以给我一些解释这个练习的提示/技巧。 我不确定如何从这里开始,但我想知道缺少什么,然后重试。
谢谢你们的帮助!
答案 0 :(得分:8)
您应该传递一些值,因为aSmile
和bSmile
并不知道该方法中的变量。
来自示例:
AreWeInTrouble(true, false);
其次,您应该捕获返回值:
bool result = AreWeInTrouble(true, false);
可能会显示它:
bool result = AreWeInTrouble(true, false);
Console.WriteLine("Are we in trouble? {0}", result);
此外,请将您的方法设为static
,因为Main
方法是:
public static bool AreWeInTrouble(bool aSmile, bool bSmile)
{ }
答案 1 :(得分:4)
试试这个:
static void Main(string[] args) {
Console.WriteLine(AreWeInTrouble(true, true)); // In trouble
Console.WriteLine(AreWeInTrouble(false, false)); // In trouble
Console.WriteLine(AreWeInTrouble(true, false)); // Not in trouble
Console.ReadLine(true);
}
static bool AreWeInTrouble(bool aSmile, bool bSmile) {
// If aSmile matches bSmile then we are in trouble.
return aSmile == bSmile;
}
答案 2 :(得分:1)
AreWeInTrouble
方法看起来很好(但作为提示:查看独占或运算符,XOR)。
main方法中的调用引用变量,这些变量未在Main
方法的范围内定义。
public static void Main()
{
AreWeInTrouble(aSmile, bSmile); // <--- aSmile, bSmile are not defined
}
您可以使用布尔常量true
和false
调用该方法,或者您需要在main方法的范围内定义变量:
public static void Main()
{
bool aSmile = true;
bool bSmile = false;
AreWeInTrouble(aSmile, bSmile); // returns false
AreWeInTrouble(aSmile, true); // returns true
}
当然,AreWeInTrouble
方法必须声明为static
,因为Main
方法是静态的,因此在没有实例的情况下无法访问类的实例方法。< / p>
答案 3 :(得分:1)
我建议你为这个方法创建一个单元测试,这样你就可以输入你想要的输入和返回的预期输入。这将使您成为更复杂场景的更好编码器。 link
关于布尔解决,想想我想要这样的东西:
bool areBothSmilling = aSmile && bSmile; // Booleans don`t need ==, the == will return a boolean;
bool areBothNotSmilling = !aSmile && bSmile == false; // ! and == false will produce the same results
return areBothSmilling || areBothNotSmilling;
但如果你仔细想想,如果两个布尔值相等,你想要返回true,所以我认为这也解决了这个问题:
return aSmile == bSmile;
答案 4 :(得分:0)
你应该像这样声明一个微笑和微笑
static void Main(string[] args)
{
bool aSmile=true;
bool bSmile=false;
AreWeInTrouble(aSmile, bSmile);
}
并且您的方法应该有此签名
public static bool AreWeInTrouble(bool aSmile,bool bSmile)
答案 5 :(得分:0)
这个逻辑可以通过简单的XNOR逻辑实现。
public static bool AreWeInTrouble(bool aSmile, bool bSmile)
{
return aSmile == bSmile;
}