循环搞乱Java模式吗?

时间:2018-10-21 19:01:09

标签: java loops for-loop

我的循环似乎有点麻烦。循环的第一部分工作正常,但是第二部分没有打印出正确数量的空格。它应该以(N-1)* 2个空格开始,然后降为零,每次减少2,或者至少这是我要完成的工作。

它必须是for循环,我认为输入的内容可以工作,但是无论输入什么,我似乎都无法获得想要的结果。例如,如果用户输入四个,则应该是结果:

O      O
 O    O
  O  O
   OO 

相反,这就是我得到的:

O    O
 O    O
  O    O
   O    O

这是我的代码:

    int N = 0;
    System.out.println("Enter a value between 2 and 10.");
    N = keyNum.nextInt();
    for (int a = 0; a < N; a++) 
    {
        System.out.println("");
        for (int b = 0; b < a; b++) 
        {
            System.out.print(" ");
        }
        System.out.print("O");

        //This loop is the one I`m having trouble with, everything else works fine!

        for (int c = (N - 1) * 2; c >= 0; c -= 2)
        {
            System.out.print(" ");  
        }
        System.out.print("O");
    }

我对编程还很陌生,因此希望获得任何帮助!我真的希望有一个良好的基础,所以我不会养成不良的编码习惯,这就是为什么我需要帮助来了解我的循环到底出了什么问题。

任何建议都是有用的!

2 个答案:

答案 0 :(得分:0)

是的。您的当前循环是一个常数。您还需要通过a进行调整。也就是说,更改此

for (int c = (N - 1) * 2; c >= 0; c -= 2)
{
    System.out.print(" ");  
}

类似

for (int c = (N - a - 1) * 2; c > 0; c--) 
{
    System.out.print(" ");
}

我没有其他改变(N = 4)

O      O
 O    O
  O  O
   OO

答案 1 :(得分:0)

您的第二个for循环有问题。您没有基于a更改空格数。试试这个:

    int N = 0;
    Scanner keyNum = new Scanner(System.in);
    System.out.println("Enter a value between 2 and 10.");
    N = keyNum.nextInt();
    for (int a = 0; a < N; a++) 
    {
        System.out.println("");
        for (int b = 0; b < a; b++) 
        {
            System.out.print(" ");
        }
        System.out.print("O");

        for (int c = (N - a - 1) * 2 ; c > 0; c -= 2)
        {
            System.out.print("  ");  
        }
        System.out.print("O");
    }