【算法题】从键盘输入一个整数 N,打印出 N*2-1 行的菱形

题目:从键盘输入一个整数 N,打印出 N*2-1 行的菱形。

思路:

将菱形分红正、倒两个三角形再加“中间一行”,这样只须要编写“正三角形”和“中间一行”的代码,“倒三角形”直接反转“正三角形”就能够获得,便可拼成完整菱形。java

代码:

public class practice {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个整数:");
        if (sc.hasNextInt()) {
            int num = sc.nextInt();     //输入数据
            List<String> triangle = new ArrayList<>();  //存储正三角形每一行的空格和*
            /* 正三角 */
            int sum = 1;      //*的个数
            for (int i = 1; i <= num - 1; i++) {        //外循环次数:正三角形的行数
                String temp = "";        //临时存放当前行的空格和*,每外循环一次清空
                for (int j = num - 1; j >= i; j--) {    //循环次数:每一行空格的个数
                    temp = temp + " ";
                }
                for (int k = 1; k <= sum; k++) {        //循环次数:每一行*的个数
                    temp = temp + "*";
                }
                triangle.add(temp);     //添加每一行到集合中
                sum = sum + 2;      //换行累加2
            }
            for (String s : triangle) {     //遍历集合,打印出正三角形
                System.out.println(s);
            }
            /* 中间一行 */
            for (int i = 0; i < 2 * num - 1; i++) {     //已知N计算中间一行*的个数
                System.out.print("*");
            }
            System.out.println();       //换行
            /* 倒三角 */
            Collections.reverse(triangle);  //反转集合元素顺序
            for (String s : triangle) {
                System.out.println(s);      //遍历集合,打印出倒三角形
            }
        }
    }
}
相关文章
相关标签/搜索