如果句子不起作用,则等于或更少
本文关键字:句子 不起作用 如果 | 更新日期: 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
改成了if
,if
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++) {
...
}