如何使用嵌套的 While 循环在 Java 中显示行和列

How to use a nested While loops to display Rows and Columns in Java

我正在尝试得出以下输出:

Row 1 Col A
Row 1 Col B
Row 2 Col A
Row 2 Col B

我无法理解完成此任务的逻辑。到目前为止,我想出了下面提供的代码:

int iRowNum;
int iColLetter;

iRowNum = 1;
iColLetter = 65;

while (iColLetter < 67)
{

  System.out.println("Row " + iRowNum + " Col " + (char)iColLetter);

  iColLetter++;

  while (iRowNum < 3)
  {
    iRowNum += 1;
  }
}

不幸的是,我收到以下输出:

Row 1 Col A
Row 3 Col B

话虽这么说,但我感觉我已经接近我需要达到的目标,但我花了很多时间试图找出我想要的输出背后的逻辑。

最后一题 如何显示此 post 的第一块中所示的行和列?

你搞错了递增的顺序。这应该可以完成工作:

iRowNum = 1;
iColLetter = 65;

while (iRowNum < 3) {
  for(int i = 0; i + iColLetter < 67; i++){
    System.out.println("Row " + iRowNum + " Col " + (char)(iColLetter + i));
  }
  iRowNum += 1;
}

您首先遍历行然后遍历列。这就是您没有获得所需输出的原因。请参阅您的代码中的以下更正:

iRowNum = 1;
while (iRowNum < 3)
{
   iColLetter = 65;
   while (iColLetter < 67)
   {  
      System.out.println("Row " + iRowNum + " Col " + (char)iColLetter);    
      iColLetter++;
   }    
   iRowNum += 1;
}
    iRowNum = 1;
    iColLetter = 65;

    while (iRowNum < 3) {
        iColLetter = 65;
        while (iColLetter < 67) {

            System.out.println("Row " + iRowNum + " Col " + (char) iColLetter);

            iColLetter++;


        }
        iRowNum += 1;
    }

输出

Row 1 Col A
Row 1 Col B
Row 2 Col A
Row 2 Col B

我已将答案尽可能贴近您的代码。我不得不做一些小改动——你应该分析每一个,以了解每一行代码在循环如何工作方面的细微差别,以及在某些情况下你需要如何重新初始化变量/重构循环。

int iRowNum = 1;
int iColLetter = 65;

while (iRowNum < 3)
{    
  while (iColLetter < 67)
  {      
    System.out.println("Row " + iRowNum + " Col " + (char)iColLetter);//print alphabet for the given row
    iColLetter++;//increment the alphabet
  }
  iRowNum += 1;//row 1 printed, point to row 2
  iColLetter=65;//row 1 printed, reinitialize to start printing at A
}

  }

按如下操作:

public class Main {
    public static void main(String[] args) {
        int iRowNum = 1;
        int iColLetter = 65;
        while (iRowNum < 3) {
            iColLetter = 65;
            while (iColLetter < 67) {
                System.out.println("Row " + iRowNum + " Col " + (char) iColLetter);
                iColLetter++;
            }
            iRowNum += 1;
        }
    }
}

输出:

Row 1 Col A
Row 1 Col B
Row 2 Col A
Row 2 Col B

解释:

  1. 由于您希望 iRowNum 上升到 2,因此您可以从 while (iRowNum < 3)while (iRowNum <= 2) 开始。
  2. 对于 iRowNum 的每个值,内循环必须 运行 两次,从 65 开始,即您需要将 iColLetter 重置为 65在内循环开始之前。

您的输出只有两行,这意味着程序没有进入内部 while 循环进行打印。原因是 iColLetter = 65 并且它增加到 57 并停止进入 while 循环。所以你必须在外循环中重置 iColLetter = 65。 看例子

public class NestWhileLoop {
    public static void main(String [] args) {
        int iRowNum = 1;
        int iColLetter = 65;


        while (iRowNum < 3) {

            while (iColLetter < 67){

                System.out.println("Row " + iRowNum + " Col " + (char)iColLetter);

                iColLetter++;
            }
            iColLetter = 65;
            iRowNum ++;

        }

   }

}