如何制作侧面增加和减少的空心盒?

时间:2018-07-13 04:18:08

标签: java design-patterns

我已经尝试过一个Java程序,该程序在中间包括空心,并且根据用户的输入在侧面减少和增加数字。 假设用户的输入为4,则输出应如下所示:-

1 2 3 4
2     3
3     2
4 3 2 1

我设法做到了,直到这样:-

1 2 3 4 
2
3
4 3 2 1

使用此代码:

import java.util.*;
public class Exercise2 {
public static void main(String args[])
{
    System.out.print("Enter an integer >0 and <21: ");
    Scanner input = new Scanner (System.in);
    int num = input.nextInt();

    for (int i = 0; i < num; i++)
    { 
        System.out.print((i+1) + " ");
    }  
    System.out.println();

    for (int j = 1; j < num-1; j++)
    {
        System.out.println((j+1) + " ");
    }       
 // for (int j = num-1; j > 1; j--)
 // {
 //    System.out.print(j + " ");
 // }
    for (int j = num; j > 0; j--)
    {
        System.out.print((j) + " ");
    }
    System.out.println();



    if (num > 21 || num < 0)
    {
        System.out.println("Wrong number range");
    }
 }
}

我不知道该怎么做,使其向下变成4 3 2 1。我尝试取消注释代码的注释,它给出了3 2,这是我想要的,但不是直线。我不知道我的错误在哪里。而且我不怎么插入空格(System.out.print(“”)),以便空心实际上是打印的东西,而不仅仅是空白。

1 个答案:

答案 0 :(得分:0)

这是一种方法:

    for (int i = 0; i < num; ++i) {
        for (int j = 0; j < num; ++j) {
            if (i == 0) {
                System.out.print((j + 1) + " ");
            } else if (i == num-1) {
                System.out.print((num - j) + " ");
            } else if (j == 0) {
                System.out.print((i + 1) + " ");
            } else if (j == num-1) {
                System.out.print((num - i) + " ");
            } else {
                System.out.print("  ");
            }
        }
        System.out.println();
    }