我试图弄清楚如何将以下for循环转换为while循环,我非常接近,因为输出与原始循环非常相似,但缺少空格。基本上它是通过显示小*标志在屏幕上打印X.在我重新编写它的尝试中,我获得相同数量的*但没有空格,因此它在下一行打印下一个*,这使它成为一条直线。
编辑:我按照建议重新分配了j = MIN,但我也忘了提到我要问的问题是我必须将for转换为while循环,并替换if-else语句系列只有一个if-else-if-else语句。
这是原作:
公共课程实践 {
public static void main(String[] args)
{
final int MIN = 1;
final int MAX = 7;
int i;
int j;
for (i = MIN; i<=MAX; i++)
{
for (j = MIN; j<=MAX; j++)
{
if (i==j)
if (i == (MIN+MAX)/2)
System.out.print("o");
else
System.out.print("*");
else if (i+j == MIN+MAX)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}
这是我的尝试:
public static void main(String[] args)
{
final int MIN = 1;
final int MAX = 7;
int i = MIN;
int j = MAX;
while (i <= MAX)
{
j = MIN;
while (j <= MAX)
{
if(i == j && i == (MIN+MAX)/2)
{
System.out.print('o');
}
else
{
System.out.print("*");
}
if (i + j == MIN + MAX)
{
System.out.print("*");
}
else
{
System.out.print(" ");
}
j++;
}
System.out.println();
i++;
}
}
}
答案 0 :(得分:0)
您需要在嵌套j = MIN;
循环之前初始化j = MAX;
而不是while
。
此外,嵌套的if
- else
构造与原始构造不同。
答案 1 :(得分:0)
试试这个:
public static void main(String[] args)
{
final int MIN = 1;
final int MAX = 7;
int i = MIN;
int j = MIN;
while (i++ <= MAX)
{
while (j++ <= MAX)
{
if (i==j)
if (i == (MIN+MAX)/2)
System.out.print("o");
else
System.out.print("*");
else if (i+j == MIN+MAX)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
答案 2 :(得分:0)
以下是您的解决方案:
public static void main(String[] args) {
final int MIN = 1;
final int MAX = 7;
int i = MIN;
int j = MAX;
while (i <= MAX) {
j = MIN;
while (j <= MAX) {
if (i == j)
if (i == (MIN + MAX) / 2)
System.out.print("o");
else
System.out.print("*");
else if (i + j == MIN + MAX)
System.out.print("*");
else
System.out.print(" ");
j++;
}
System.out.println();
i++;
}
}
只有一个修改:
public static void main(String[] args) {
final int MIN = 1;
final int MAX = 7;
int i = MIN;
int j = MAX;
while (i <= MAX) {
j = MIN;
while (j <= MAX) {
if ((i == j) && (i == (MIN + MAX) / 2))
System.out.print("o");
else if ((i + j == MIN + MAX) || (i == j))
System.out.print("*");
else
System.out.print(" ");
j++;
}
System.out.println();
i++;
}
}