Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 试着用C语言制作一架钢琴#_C#_Piano - Fatal编程技术网

C# 试着用C语言制作一架钢琴#

C# 试着用C语言制作一架钢琴#,c#,piano,C#,Piano,所以我想做一个C#Console钢琴程序。我试着这样做,如果你按下一个像Z这样的按钮,它会用控制台的哔哔声播放一个音符。我已经尝试过这段代码,但它没有达到预期的效果。它的作用是,当我按下一个键时,它不能正确运行代码,在错误的键上播放错误的音符(Z播放X的音符,X播放Z的音符),甚至在按下一个未指定的键时它也会播放一个音符(我按下y,它播放X的音符,即使y没有代码做任何事情)。我是C#的新手,正在努力学习。这是我一直在测试的糟糕代码。请帮忙。我还希望代码简单,不要太高级 ConsoleKeyInf

所以我想做一个C#Console钢琴程序。我试着这样做,如果你按下一个像Z这样的按钮,它会用控制台的哔哔声播放一个音符。我已经尝试过这段代码,但它没有达到预期的效果。它的作用是,当我按下一个键时,它不能正确运行代码,在错误的键上播放错误的音符(Z播放X的音符,X播放Z的音符),甚至在按下一个未指定的键时它也会播放一个音符(我按下y,它播放X的音符,即使y没有代码做任何事情)。我是C#的新手,正在努力学习。这是我一直在测试的糟糕代码。请帮忙。我还希望代码简单,不要太高级

ConsoleKeyInfo keyinfo;
        do
        {
            keyinfo = Console.ReadKey();
            if (keyinfo.Key != ConsoleKey.Z)
            {
                Console.Beep(163, 100);
                Console.Clear();
            }
            else if (keyinfo.Key != ConsoleKey.X)
            {
                Console.Beep(183, 100);
                Console.Clear();
            }
            else if (keyinfo.Key != ConsoleKey.C)
            {
                Console.Beep(206, 100);
                Console.Clear();
            }
        }
        while (keyinfo.Key != ConsoleKey.Escape); 

=
运算符表示“不相等”,但看起来您正在尝试检查相等性。因此,在您的
if
语句中,使用
=

随着编程技能的提高,您将找到使代码更简单、重复性更少的方法。例如:

  • switch
    语句和
    switch
    表达式旨在替换
    if
    /
    else
    这样的链,其中每个条件都是相等检查
  • 由于每个条件之间的唯一区别是作为第一个参数传递给Beep的数字,因此可以使用
    开关
    表达式,只需将重点放在选择该数字上,然后在表达式末尾包含剩余的代码一次
  • 对于这种有限的情况来说,这可能太多了,但您也可以使用面向对象技术创建一个对象来表示每个键及其预期行为

但它不能按预期工作
← 你需要包括发生了什么,我们不想猜测。包括输入、预期行为和观察到的行为。
=
运算符表示“不相等”,但看起来您正在尝试检查相等性。因此,在您的
if
语句中,使用
=
。有一个完整的例子-什么特别不适合您的代码?请不要在您的问题中添加“(我刚刚不得不将!=更改为==。谢谢@StriplingWarrior)”。您应该将其作为评论或答案添加。@谜性:公平地说:OP没有足够的声誉添加评论,并且在添加文本时问题已结束。它最近才重新开放。