这可能是学校男生的错误,但我无法解决/获得正确的结果返回。
我的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
任何有新眼睛的人都能看到我做错了吗
由于
答案 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