简单的c#练习适合初学者。我被卡住了

时间:2015-04-01 09:14:40

标签: c#

我正在练习c#练习,但我不清楚我应该做什么以及如何做事。 (我还没考虑编译器):(。

练习设置如下。

  • 我们有两个孩子,a和b,以及参数aSmile和bSmile 表明每个人是否在微笑。
  • 如果他们都笑了,或者两者都没有,我们就会遇到麻烦 面带微笑。
  • 如果我们遇到麻烦,则返回true。
  • AreWeInTrouble(true,true) - >是的
  • AreWeInTrouble(false,false) - >真
  • AreWeInTrouble(true,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 Smile在当前内容中不存在。

所以我想问一下是否有人可以给我一些解释这个练习的提示/技巧。 我不确定如何从这里开始,但我想知道缺少什么,然后重试。

谢谢你们的帮助!

6 个答案:

答案 0 :(得分:8)

您应该传递一些值,因为aSmilebSmile并不知道该方法中的变量。

来自示例:

 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
}

您可以使用布尔常量truefalse调用该方法,或者您需要在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;
}