C# 在if语句中等于或小于';行不通
所以我做了一个简单的商店,为我正在制作的游戏购买升级版。当我有足够或更多的cookie时,我可以购买升级,并且它会显示在消息框中,但是如果我的cookie数量较少,它就不会起任何作用。没有消息框或任何东西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++)
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块饼干!”);
}
如果(cookiesAfor
循环将继续执行内的代码,直到不满足某个条件为止(事实上,根本无法执行)。由于您的代码处于单击事件中,并且您的消息特别提到“每次单击”,在我看来,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
在单独的线程中更新,否则循环的内部将永远不会有错误