【算法題】從鍵盤輸入一個整數 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);      //遍歷集合,打印出倒三角形
            }
        }
    }
}
相關文章
相關標籤/搜索