尝试将for循环的此代码转换为while循环:
int endData = myScanner.nextInt();
int row = 0;
int cell = 0;
int rowcell = 0;
System.out.println("FOR LOOP: ");
for (row = 1; row <= endData; row++) {
if (row%2 == 0) {
for (cell = 0; cell < row; cell++) {
for (rowcell = 0; rowcell <= cell; rowcell++) {
System.out.print(row);
}
System.out.println("");
}
}
else {
for (cell = row; cell > 0; cell--) {
for (rowcell = cell; rowcell > 0; rowcell--) {
System.out.print(row);
}
System.out.println("");
}
}
}
到目前为止,我已经尝试过这个代码,但结果完全错误:
row2 = 1;
while (row2 <= endData){
if(row2%2 == 0){
cell2=0;
rowcell2 = 0;
while(cell2<row2){
cell2++;
while(rowcell2 <= cell2){
rowcell2++;
System.out.print(row2);
} System.out.println("");
}
}else {
cell2=row2;
rowcell2 = cell2;
while(cell2 >0){
cell2--;
}while (rowcell2>0){
rowcell2--;
System.out.print(row2);
}System.out.println("");
} row2++;
}
例如,当用户输入值3时,For循环返回正确答案:
1
2
22
333
33
3
但是while循环输出:
1
22
2
333
关于如何修复while循环,有什么想法吗?
我看到的一个错误是初始化
rowcell2 = 0;
它应该在下
while(cell2<row2){
单元格在for循环结束时递增,在while循环开始时递增for(cell2)。其他问题也可能存在。
for循环在循环结束时执行最后一个部分(单元格++等)。
转换它所要做的就是在while循环之前声明索引,并将增量器添加到while循环的末尾。
int endData = myScanner.nextInt();
int row = 0;
int cell = 0;
int rowcell = 0;
System.out.println("FOR LOOP: ");
row = 1;
while(row <= endData) {
if (row%2 == 0) {
cell = 0;
while (cell < row) {
rowcell = 0;
while (rowcell <= cell) {
System.out.print(row);
rowcell++;
}
System.out.println("");
cell++;
}
row++;
}
else {
cell = row;
while (cell > 0;) {
for (rowcell = cell; rowcell > 0; rowcell--) {
System.out.print(row);
cell--;
}
System.out.println("");
}
}
}