C#中的switch语句有什么问题?
我试图从一个用户那里获取一个值,然后每次点击按钮,它都必须打印一条语句和一张代表尝试次数的图片。if语句正在工作,但它始终显示最后一个案例的picC#中的switch语句有什么问题?,c#,asp.net,C#,Asp.net,我试图从一个用户那里获取一个值,然后每次点击按钮,它都必须打印一条语句和一张代表尝试次数的图片。if语句正在工作,但它始终显示最后一个案例的pic private void button1_Click(object sender, EventArgs e) { if (textBox1.Text != "") { int gussednum= Convert.ToInt16( textBox1.Text); for (int i = 0
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text != "")
{
int gussednum= Convert.ToInt16( textBox1.Text);
for (int i = 0; i < 7; ++i)
{
if (interednum < num)
{
label1.Text = "Should be greater than" + num;
switch (i)
{
case (0) :
Image image = Image.FromFile("1.png");
pictureBox1.Image = image;
break;
case (1):
Image im2 = Image.FromFile("2.png");
pictureBox1.Image = im2;
break;
case (2):
Image im3 = Image.FromFile("3.png");
pictureBox1.Image = im3;
break;
case (3):
Image image4 = Image.FromFile("4.png");
pictureBox1.Image = image4;
break;
case (4):
Image image5 = Image.FromFile("5.png");
pictureBox1.Image = image5;
break;
case (5):
Image image6 = Image.FromFile("dead.gif");
pictureBox1.Image = image6;
break;
case (6):
Image image7 = Image.FromFile("red.png");
pictureBox1.Image = image7;
break;
}
}
private void按钮1\u单击(对象发送者,事件参数e)
{
如果(textBox1.Text!=“”)
{
int gussednum=Convert.ToInt16(textBox1.Text);
对于(int i=0;i<7;++i)
{
if(interednum
您总是将图像分配给pictureBox1。显然,在循环中最后一次执行开关/案例时(#7)
因此,您要么在复制/粘贴时输入了pictureBox1,要么也应该中断一个循环(从开关/案例中断)
我不确定这是否是StackOverflow问题,只是一些复制/粘贴问题。因为您已经用for
循环将开关/case
包装好了:
for (int i = 0; i < 7; ++i)
您将始终使i
等于6
,因为每次运行时它都会循环到它。这就是为什么它总是输出最后一个案例的原因
这可能是个问题,也可能不是,但值得一看。似乎您总是更改同一个对象(pictureBox1
):
您可能有多个pictureBox
对象,因此它可能看起来像这样:
pictureBox7.Image = image7;//do this for every pictureBox in every case statement
它是在循环中运行的,所以它是插入第一个图像,下一个图像,等等,直到最后一个。看到它可能很快,这就是为什么你只看到最后一个图像。试着调试该程序,看看它是真的
我的建议是:只需在开关箱中更改所有break的“return”命令即可
在我看来,这段代码没有意义(我说的是for循环中的switch case;)).什么是interednum
和num
呢?你能提供分配给它们的代码吗?这是对switch语句的严重误用。interednum
和num
定义在哪里?我给num分配了一个随机数static random R=new random();int num=R.Next(100);我从文本框中获取interednum!是的,我得到了它,我不需要循环:D我使用了一段时间(使用全局变量I),每次按下按钮时它都会增加。I移除foor,我使用了while…它非常有效谢谢你:没有问题。|=^]如果你觉得这是一个好的/正确的答案,请投赞成票或打勾。
interednum < num
pictureBox1.Image = image7;
pictureBox7.Image = image7;//do this for every pictureBox in every case statement