首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果句子无效,等于或小于等于

问如果句子无效,等于或小于等于
EN

Stack Overflow用户
提问于 2016-01-22 17:44:02
回答 4查看 87关注 0票数 0

所以,我做了一个简单的商店,为我正在制作的游戏购买升级版。当我有了正确的或更多的cookie,我可以购买升级,它确实显示消息框,但如果我有更少,它什么也不做。没有留言框什么的。

代码语言:javascript
复制
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!");
            }

        }

    }

编辑:更新了它,这要感谢Rob和!更新代码:

代码语言:javascript
复制
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!");
            }

    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-22 17:52:02

  • n是什么?我用attempt代替了它。
    • 我不太理解for循环中的逻辑,所以我可能已经更改了您想要的行为。

​

  • 我将消息框代码移到循环中。
    • 在for循环的条件下不执行逻辑是一个很好的实践。

​

  • 我把if,if改成了if,else。这有两个好处:
    • 您不再需要检查第二个条件(cookie< 9)
    • 在检查第二个条件时出错了--当cookies == 9时会发生什么?
    • 您绝对相信只有一个分支将执行

​

最大的好处是使代码更简单,一次只做一件事,并且不要重复:)希望这样可以减少big的数量。

以下是更新的代码:

代码语言:javascript
复制
    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!");
        }
    }
票数 2
EN

Stack Overflow用户

发布于 2016-01-22 17:49:34

您的for循环很奇怪:

代码语言:javascript
复制
for (MessageBox.Show("Checking..."); cookies > 9;n++)

当cookies <= 9时不输入此循环。因此,您的if语句永远无法到达。

票数 2
EN

Stack Overflow用户

发布于 2016-01-22 17:56:51

您的代码不工作,因为循环条件是“只有在cookies数量大于9个时才循环”。如果数字小于9或等于9,则将永远不会执行循环!

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

使用for循环的惯用方法是

代码语言:javascript
复制
const int N = 20;
for (int i = 0; i < N; i++) {
    ...
}

如果没有限制

代码语言:javascript
复制
for (int i = 0; true; i++) {
    ...
}

这是技术上有可能调用消息框的一部分,但是非常罕见的!此位置保留用于循环变量的声明和初始化。更好的:在循环之前调用消息框:

代码语言:javascript
复制
MessageBox.Show("Checking...");
for (int cookies = 0; true; cookies++) {
    ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34952894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档