有人可以帮助我使用C#解决这个逻辑

时间:2011-11-30 00:59:34

标签: c# asp.net linq

以下是我想要做的事情的逻辑。可以帮助我用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 =“你赢了” 每当i的值为6,8,10或3时strMessage =“你可以再试一次”

7 个答案:

答案 0 :(得分:7)

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);

答案 1 :(得分:2)

此特定代码将始终显示

strMessage = "You can try again";

因为for循环以及当i> 10时,交换机不会执行任何操作。

答案 2 :(得分:1)

你的循环将导致打印所有消息,以及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)时,该消息将被设置为“你可以再试一次”,并且不会再次设置。

所以,当循环结束时,消息将是“你可以再试一次”...来解决这个问题,要么将你的Response.Write移动到循环中

交换机上的语法都错了:

switch (i)
{
   case 1:
   case 2:
   // do something
   break;
}

here is the MSDN reference for switch

一般指导原则是你可以将多个案例陈述放在一起,但case不能落空(就像在C / C ++中一样),它必须以break;

结尾

答案 3 :(得分:1)

你可以选择像

这样的东西
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);

答案 4 :(得分:0)

每个案例可能只代表一个值,因此您要做的是不间断地创建案例:

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);

答案 5 :(得分:0)

我相信你在编译时遇到了麻烦,因为像“Case1,2,7,5”这样的陈述是无效的。

相反,您需要对它们进行分层并根据需要使用fallthrough / 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;
    }

}

查看相关问题Multiple Cases in Switch

答案 6 :(得分:0)

你应该这样写:

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;
            }
        }