For循环返回错误的值
本文关键字:错误 返回 循环 For | 更新日期: 2023-09-27 18:07:57
这可能是学生的错误,但我无法解决/得到正确的结果返回。
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
谁能有一双新鲜的眼睛看到我做错了什么
谢谢
您提供的代码执行您编写的代码:它执行for
循环体的时间比numberOfRooms
的值少一次。
[并且意识到每次执行for
循环体时,您正在编写不是一个,而是两个兄弟<div>
元素,对吗?)
,
-
n=1
,我得到一个空字符串作为结果,因为for
循环的主体永远不会执行。 -
n=2
, for循环体只执行一次,生成如下:<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
,for
循环体执行两次,生成<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> <div id=HotelRoom2> <p>Room 2</p> <select id=room2> <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=ChildCountRoom2> <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="NumberOfChildrenRoom2"></div>
为了得到这个,我将你的代码粘贴到Visual Studio中,将其包装在一个简单的控制台应用程序中,并做了一点重构以使其更具可读性,因此:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace ConsoleApplication7
{
class Program
{
static string GenerateHtml( int numberOfRooms )
{
var sb = new StringBuilder();
for ( int a = 1 ; a < numberOfRooms ; a++ )
{
sb.AppendFormat( "<div id=HotelRoom{0}>" , a ).AppendLine() ;
sb.AppendFormat( " <p>Room {0}</p>" , a ).AppendLine() ;
sb.AppendFormat( " <select id=room{0}>" , a ).AppendLine() ;
sb.AppendFormat( " <option value='"0'">Adults (18+)</option>" ).AppendLine() ;
for ( int i = 1 ; i < 9 ; i++ )
{
sb.AppendFormat( " <option value={0}>{0}</option>" , i ).AppendLine() ;
}
sb.AppendFormat( " </select>" ).AppendLine() ;
sb.AppendFormat( " <select id=ChildCountRoom{0}>" , a ).AppendLine() ;
sb.AppendFormat( " <option value='"0'">Children 0 - 17</option>" ).AppendLine() ;
for ( int i = 1 ; i < 4 ; i++ )
{
sb.AppendFormat( " <option value={0}>{0}</option>" , i ).AppendLine() ;
}
sb.AppendFormat( " </select>" ).AppendLine() ;
sb.AppendFormat( "</div>" ).AppendLine() ;
sb.AppendFormat( "<div id='"NumberOfChildrenRoom{0}'"></div>" , a ).AppendLine() ;
}
return sb.ToString();
}
static void Main()
{
for ( int i = 0 ; i < 5 ; ++i )
{
Console.WriteLine() ;
Console.WriteLine("=== {0} =============================================================" , i ) ;
string html = GenerateHtml(i) ;
Console.WriteLine( html ) ;
Console.WriteLine("=====================================================================") ;
}
return;
}
}
}