将for循环重写为while循环

时间:2016-10-20 15:40:01

标签: java loops

我试图弄清楚如何将以下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++;
    }

}

}

3 个答案:

答案 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++;
    }
}