3

我必须打印一个带有字母的 5x5 表格,例如:

<table>
 <tr> <td>A</td> <td>B</td> <td>C</td> <td>D</td> <td>D</td>

等等。这些字母实际上是一个链接,所以它们会像:

<td> <a href='/someplace'>A</a> </td>

这些链接有经常变化的趋势,我不喜欢硬编码和替换它们,因为它们会出现在相当多的页面中。所以我想我会写一个函数来输出整个结构。

是的,这很简单,让for循环表现得像:

  StringBuilder alphabets = new StringBuilder("<table class='table'>");
  for(int i=65; i<=87; i++)
  {
      //Do stuff here to calculate if i mod 5 is zero and add <tr> accordingly.
      //Use Convert.ToChar(i); to get the wanted structure.
  }

然后它击中了我,我可以使用嵌套的 for 循环以更好,“聪明”的方式做到这一点,

for(i=1; i<=5; i++)
{
    alpbahets.Append("<tr>")
    for(j=1; j<5; j++)
    {
        //Get the <a > link string here.
    }
    alphabets.Append("</tr");
}

现在的问题是,我该怎么做才能将它们关联到 65-87 的范围内 i(AW,因为它是一个 5x5 网格,我将跳过最后一次迭代并手动添加一个jYZtd

我试过(i*10 + j) + 54) (是的,我不知道我在想什么),但它不起作用。

抱歉,这可能是一个非常愚蠢的问题,但是在嵌套for循环中完成此操作的方法是什么?或者有没有其他更好的方法?我问是因为我很想知道更多(而且我已经不知道了)。

4

5 回答 5

5

char letter = 'A';在你的循环之外引入一个变量怎么样?

然后在使用它之后,调用letter++;移动到字母表中的下一个字母。

这也将使您的程序更具可读性,并且不会强迫其他程序员看到一些计算,包括以字母结尾的 i 和 j。

简单通常是最好的解决方案:)

于 2011-02-10T11:51:22.033 回答
2
for(i=0; i<5; i++)
{
  alpbahets.Append("<tr>")
  for(j=0; j<5; j++)
  {
        int val = 65 + i*5 +j;
        //get the <a > link string here
  }
  alphabets.Append("</tr");
}
于 2011-02-10T11:52:13.847 回答
1

对 i 和 j 使用从零开始的索引,然后使用公式:

 int x = (i*5) + j + 65;
 if (x<=87)
     printCharacter(x);
于 2011-02-10T11:52:17.460 回答
1

我说选择已经建议的简单字符选项,

也就是说,它也可以像这样在循环中完成,尽管它不是我写过的最易读的代码。

StringBuilder alphabets = new StringBuilder("<table class='table'>"); 
for(int i=0; i<=5; i++)
{
  alphabets.Append("<tr>\n");
  for(int j=0; j<5; j++)
  {
        alphabets.Append("<td><a href=\""+"linkGoesHere"+"\">"+ (65+i*5+j<91?Convert.ToChar(65+i*5+j):' ') +"</a></td>\n");
  }
  alphabets.Append("</tr>");
}
alphabets.ToString().Dump();

请注意三元运算符以确保最后几个单元格是空白而不是特殊字符。

于 2011-02-10T12:06:45.023 回答
0

如果您可以将它们输出为容器内的浮动 div,而不是表格单元格,那么您可以在前端使用转发器控件(包含单个浮动 div)并将转发器绑定到所需字母的数组(注意Y 和 Z 也是如此)。

于 2011-02-10T11:53:03.780 回答