C# 在if语句中等于或小于';行不通

C# 在if语句中等于或小于';行不通,c#,if-statement,C#,If Statement,所以我做了一个简单的商店,为我正在制作的游戏购买升级版。当我有足够或更多的cookie时,我可以购买升级,并且它会显示在消息框中,但是如果我的cookie数量较少,它就不会起任何作用。没有消息框或任何东西 public void button1_Click_1(object sender, EventArgs e) //2CookiesPerClick { for (MessageBox.Show("Checking..."); cookies > 9;n++)

所以我做了一个简单的商店,为我正在制作的游戏购买升级版。当我有足够或更多的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!");
            }

        }

    }

你的
for
循环很奇怪:

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

cookies您的
for
循环异常时,不会进入此循环:

for (MessageBox.Show("Checking..."); cookies > 9;n++)
cookies
  • 什么是
    n
    ?我将其替换为
    尝试
    • 我不太理解for循环中的逻辑,所以我可能已经改变了您想要的行为
  • 我将消息框代码移动到循环中
    • 在for循环的条件下不执行逻辑是一个很好的实践
  • 我将
    if
    if
    更改为
    if
    else
    。这有两个好处:
    • 您不再需要检查第二个条件(cookies<9)
    • 您在检查第二个条件时出错-当cookies==9时会发生什么情况
    • 您绝对确定只执行一个分支
最大的收获是使代码更简单,一次只做一件事,不要重复:)希望这能减少bug的数量

以下是更新的代码:

    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!");
        }
    }
MessageBox.Show(“检查…”);
for(int-trunt=0;trunt<10;trunt++)
{
cookies++;
如果(cookies>=10)
{
面板1.隐藏();
cookies-=10;
MessageBox.Show(“每次点击你买了2块饼干!”);
}
其他的
{
按钮1.Show();
label2.Show();
Show(“您没有足够的cookies购买此升级!”);
}
}
  • 什么是
    n
    ?我将其替换为
    尝试
    • 我不太理解for循环中的逻辑,所以我可能已经改变了您想要的行为
  • 我将消息框代码移动到循环中
    • 在for循环的条件下不执行逻辑是一个很好的实践
  • 我将
    if
    if
    更改为
    if
    else
    。这有两个好处:
    • 您不再需要检查第二个条件(cookies<9)
    • 您在检查第二个条件时出错-当cookies==9时会发生什么情况
    • 您绝对确定只执行一个分支
最大的收获是使代码更简单,一次只做一件事,不要重复:)希望这能减少bug的数量

以下是更新的代码:

    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!");
        }
    }
MessageBox.Show(“检查…”);
for(int-trunt=0;trunt<10;trunt++)
{
cookies++;
如果(cookies>=10)
{
面板1.隐藏();
cookies-=10;
MessageBox.Show(“每次点击你买了2块饼干!”);
}
其他的
{
按钮1.Show();
label2.Show();
Show(“您没有足够的cookies购买此升级!”);
}
}

您的代码不起作用,因为循环条件是“仅当Cookie数大于9时才循环”。如果数字小于9或等于9,循环将永远不会执行

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


使用for循环的惯用方法是

const int N = 20;
for (int i = 0; i < N; i++) {
    ...
}
从技术上讲,部分调用消息框是可能的,但这是非常罕见的!此位置保留用于循环变量的声明和初始化。更好:在循环之前调用消息框:

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

您的代码不起作用,因为循环条件是“仅当Cookie数大于9时才循环”。如果数字小于9或等于9,循环将永远不会执行

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


使用for循环的惯用方法是

const int N = 20;
for (int i = 0; i < N; i++) {
    ...
}
从技术上讲,部分调用消息框是可能的,但这是非常罕见的!此位置保留用于循环变量的声明和初始化。更好:在循环之前调用消息框:

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

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!");
   }
}
public void按钮1\u单击1(对象发送者,事件参数)//2 ookiesperclick
{
MessageBox.Show(“正在检查…”)
如果(cookies>9)
{
面板1.隐藏();
cookies-=10;
MessageBox.Show(“每次点击你买了2块饼干!”);
}

如果(cookiesA
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!");
   }
}
public void按钮1\u单击1(对象发送者,事件参数)//2 ookiesperclick
{
MessageBox.Show(“正在检查…”)
如果(cookies>9)
{
面板1.隐藏();
cookies-=10;
MessageBox.Show(“每次点击你买了2块饼干!”);
}

如果(cookies和你的问题!?这是
for
循环的oops吗?根据损坏的
for
循环,如果少于9个cookies,你将永远不会输入它。你的
for
循环在
cookies>9
时运行,因此除非
cookies
在单独的线程中更新,否则循环的内部将永远不会有错误