有人能用c#帮我解决这个逻辑吗?
本文关键字:解决 | 更新日期: 2023-09-27 18:16:04
下面是我想做的逻辑,有人可以用c#帮助我解决这个问题吗?
string strMessage=string.empty;
for (int i = 0; i < 20; ++i)
{
switch i
{
Case 1,2,7,5:
strMessage="You Won";
break;
Case 6,8,10,3:
strMessage="You can try again";
break;
}
}
Response.write(strMessage);
当i的值为1,2,7或5时,strMessage="You won"当i的值为6,8,10或3时strMessage="You can try again"
string strMessage = string.Empty;
for (int i = 0; i < 20; ++i)
{
switch(i)
{
case 1:
case 2:
case 7:
case 5:
strMessage = "You Won";
break;
case 6:
case 8:
case 10:
case 3:
strMessage = "You can try again";
break;
}
}
Response.write(strMessage);
这个特殊的代码总是会导致
strMessage = "You can try again";
,因为for循环,当i>10时,开关将不做任何事情。
你可以这样写
public string Evaluate(int value)
{
if (new[] {1, 2, 7, 5}.Contains(value)) return "You Won";
return new[] {3, 6, 8, 10 }.Contains(value) ? "Try again" : "";
}
不确定你想用你的循环做什么…看起来有点坏,但如果你试图写出每个0..19
Enumerable.Range(0, 20).Select(Evaluate).ToList().ForEach(Response.write);
您的循环将导致打印所有消息,以及12个空行。
这里有一些伪代码:
for the values 0 to 19
if i == 1 or 2 or 7 or 5 then message = "You Won"
else if i == 3 or 6 or 8 or 10 then message = "You can try again"
else message = string.empty
如果你在脑子里遍历你的代码,或者使用铅笔和纸,你的问题就会变得清晰。
所以,当它达到最大的数字在你的情况下(它是10),消息将被设置为"你可以再试一次",不会再设置。
所以,当循环结束时,消息将是"You can try again"…要解决这个问题,要么移动您的响应。写入到循环内
你的开关语法完全错误:
switch (i)
{
case 1:
case 2:
// do something
break;
}
这里是交换机的MSDN参考。
一般准则是,您可以将多个case语句放在一起,但是case
不能失败(就像在C/c++中一样),它必须以break;
每个大小写可能只表示一个值,所以您要做的是使大小写不间断:
string strMessage=string.empty;
for (int i = 0; i < 20; ++i)
{
switch i
{
Case 1:
Case 2:
Case 7:
Case 5:
strMessage="You Won";
break;
Case 6:
Case 8:
Case 10:
Case 3:
strMessage="You can try again";
break;
}
}
Response.write(strMessage);
我相信你在编译这个时遇到了麻烦,因为像"Case1,2,7,5"这样的语句是无效的。
相反,你需要对它们进行分层,并在适当的时候使用fall - through/break。
我相信这就是你想要达到的目标:
for (int i = 0; i < 20; i++)
{
switch (i)
{
Case 1:
Case 2:
Case 5:
Case 7:
strMessage="You Won";
break;
Case 3:
Case 6:
Case 8:
Case 10:
strMessage="You can try again";
break;
}
}
参见相关问题multicases in Switch
你应该这样写:
string strMessage = string.Empty;
for (int i = 0; i < 20; ++i)
{
switch (i)
{
case 1:
case 2:
case 7:
case 5:
strMessage="You Won";
break;
case 6:
case 8:
case 10:
case 3:
strMessage="You can try again";
break;
}
}