如果句子不起作用,则等于或更少

本文关键字:句子 不起作用 如果 | 更新日期: 2023-09-27 18:31:26

所以我做了一个简单的商店来购买我正在制作的游戏的升级。当我拥有正确或更多数量的 cookie 时,我可以购买升级,它确实会显示消息框,但如果我拥有较少的 cookie,它不会执行任何操作。没有消息框或任何东西。

public void button1_Click_1(object sender, EventArgs e) //2CookiesPerClick
    {
        for (MessageBox.Show("Checking..."); cookies > 9;n++)
        {
            if (cookies > 9)
            {
                panel1.Hide();
                cookies -= 10;
                MessageBox.Show("You bought 2 Cookies per Click!");
            }
            if (cookies < 9)
            {
                button1.Show();
                label2.Show();
                MessageBox.Show("You don't have enough cookies to buy this upgrade!");
            }
        }
    }

编辑:更新了它,它的工作要归功于罗布和阿玛迪乌斯·维克佐雷克!更新的代码:

public void button1_Click_1(object sender, EventArgs e)//2CookiesPerClick
    {
            if (cookies >= 10)
            {
                n++;
                panel1.Hide();
                cookies -= 10;
                MessageBox.Show("You bought 2 Cookies per Click!");
            }
            else
            {
                button1.Show();
                label2.Show();
                MessageBox.Show("You don't have enough cookies to buy this upgrade!");
            }
    }

如果句子不起作用,则等于或更少

  • 什么是n?我用attempt替换了它.
    • 我不太理解 for 循环中的逻辑,所以我可能已经改变了您想要的行为
  • 我将消息框代码移动到循环中
    • 最好不要在 for 循环的条件中执行逻辑。
  • 我把if改成了ifif else。这有两个好处:
    • 您不再需要检查第二个条件(cookie <9)
    • 您在检查第二个条件时出错 - 当 cookie == 9 时会发生什么?
    • 您绝对确定只有一个分支将执行

最大的收获是使代码更简单,一次做一件事,并且不要重复自己:)希望这将减少您的错误数量。

以下是更新的代码:

    MessageBox.Show("Checking...");
    for (int attempt = 0; attempt < 10; attempt++)
    {
        cookies++;
        if (cookies >= 10)
        {
            panel1.Hide();
            cookies -= 10;
            MessageBox.Show("You bought 2 Cookies per Click!");
        }
        else
        {
            button1.Show();
            label2.Show();
            MessageBox.Show("You don't have enough cookies to buy this upgrade!");
        }
    }

你的for循环很奇怪:

for (MessageBox.Show("Checking..."); cookies > 9;n++)

cookies <= 9 时不进入此循环。所以你的if声明永远不会达成。

for循环将继续执行代码,直到不满足条件(实际上,根本无法执行)。由于您的代码在点击事件中,并且您的消息特别提到"每次点击",在我看来,for循环无关紧要。

这可能是您要执行的操作:

public void button1_Click_1(object sender, EventArgs e) //2CookiesPerClick
{
   MessageBox.Show("Checking...")
   if (cookies > 9)
   {
       panel1.Hide();
       cookies -= 10;
       MessageBox.Show("You bought 2 Cookies per Click!");
   }
   if (cookies <= 9)
   {
       button1.Show();
       label2.Show();
       MessageBox.Show("You don't have enough cookies to buy this upgrade!");
   }
}

由于这看起来像一个家庭作业问题,我建议你将上述内容与你当前的代码进行比较,以找出为什么你的代码不起作用。如果您仍然感到困惑,请随时发表评论

您的代码不起作用,因为循环条件显示"仅当 cookie 数量大于 9 时才循环"。如果数字小于 9 或等于 9,则永远不会执行循环!

而且,我不清楚你为什么要使用循环。难道不应该在每次单击按钮时执行一次此代码吗?


使用 for 循环的惯用方式是

const int N = 20;
for (int i = 0; i < N; i++) {
    ...
}

如果没有限制

for (int i = 0; true; i++) {
    ...
}

从技术上讲,可以在 for-part 中调用消息框,但非常非常不常见!此位置保留用于循环变量的声明和初始化。更好:循环前调用消息框:

MessageBox.Show("Checking...");
for (int cookies = 0; true; cookies++) {
    ...
}