for循环返回错误的值

时间:2014-06-10 22:01:16

标签: c#

这可能是学校男生的错误,但我无法解决/获得正确的结果返回。

我的for循环如下:

var sb = new StringBuilder();
for (int a = 1; a < numberOfRooms; a++)
{
    sb.Append(string.Format("<div id=HotelRoom{0}>", a)).AppendLine();
    sb.Append(string.Format("<p>Room {0}</p>", a)).AppendLine();
    sb.Append(string.Format("<select id=room{0}>", a)).AppendLine();
    sb.Append("<option value=\"0\">Adults (18+)</option>").AppendLine();
    for (int i = 1; i < 9; i++)
    {
        sb.Append(string.Format("<option value={0}>{0}</option>", i)).AppendLine();
    }
    sb.Append("</select>").AppendLine();

    sb.Append(string.Format("<select id=ChildCountRoom{0}>", a)).AppendLine();
    sb.Append("<option value=\"0\">Children 0 - 17</option>").AppendLine();
    for (int i = 1; i < 4; i++)
    {
        sb.Append(string.Format("<option value={0}>{0}</option>", i)).AppendLine();
    }
    sb.Append("</select>").AppendLine();
    sb.Append("</div>");
    sb.Append(string.Format("<div id=\"NumberOfChildrenRoom{0}\"></div>",a)).AppendLine();
}
return sb.ToString(); 

使用上面的代码,即使我将值2传递给numberOfRooms,它也会循环两次,返回2条记录,即使循环从1开始

内循环正常工作,即

for (int i = 1; i < 9; i++)

返回8

for (int i = 1; i < 4; i++)

返回3

任何有新眼睛的人都能看到我做错了吗

由于

1 个答案:

答案 0 :(得分:0)

您提供的代码 执行您已编码的代码:它执行for循环的主体的时间少于numberOfRooms循环的主体{1}}。

[而且你意识到你每次{{{{>> 1}}循环执行,对吗?]

所以,对于

  • <div>,我得到一个空字符串作为结果,因为for循环的主体永远不会被执行。

  • n=1,for循环的主体只执行一次并生成:

    for
  • n=2<div id=HotelRoom1> <p>Room 1</p> <select id=room1> <option value="0">Adults (18+)</option> <option value=1>1</option> <option value=2>2</option> <option value=3>3</option> <option value=4>4</option> <option value=5>5</option> <option value=6>6</option> <option value=7>7</option> <option value=8>8</option> </select> <select id=ChildCountRoom1> <option value="0">Children 0 - 17</option> <option value=1>1</option> <option value=2>2</option> <option value=3>3</option> </select> </div> <div id="NumberOfChildrenRoom1"></div> 循环的主体执行两次,生成

    n=3

为了实现这一点,我将您的代码粘贴到Visual Studio中,将其包装在一个简单的控制台应用程序中,并进行了一些重构以使其更具可读性,因此:

for