如何使用嵌套的 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
解释:
- 由于您希望
iRowNum
上升到 2
,因此您可以从 while (iRowNum < 3)
或 while (iRowNum <= 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 ++;
}
}
}
我正在尝试得出以下输出:
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
解释:
- 由于您希望
iRowNum
上升到2
,因此您可以从while (iRowNum < 3)
或while (iRowNum <= 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 ++;
}
}
}