【Java】星形金字塔

星号金字塔

我创建了一个名为“星星金字塔”的程序,使用Java输入一个数字,并根据这个数字生成相应层数的金字塔。

这里是完成品。

【10段分のピラミッド】
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
*******************

寻找共同之处

为了思考这个金字塔是如何建造的,我们可以考虑”无论金字塔有多少层都保持不变的共同点”,以及它是通过什么规则建造的。除了上述的10层金字塔外,我们还可以制作一个由3层组成的金字塔,并进行比较。

【3段分のピラミッド】
  *
 ***
*****

当考虑到金字塔的层数无论是10层还是3层都没有变化的部分时

    • アスタリスクの数は何段になっても奇数

 

    • 最上段は アスタリスク が必ず1個になる

 

    • 最下段は 空白 が必ず0になる

 

    • 一段増えるごとにアスタリスクの数は2つずつ増える

 

    • 一段増えるごとに 空白 の数は 1つずつ減る。

 

    一段に入力される空白の数は、(段数 – 1)

可以考虑到这一部分。

【3段の場合のピラミッドの場合】

  *    ← 最上段 ( "*" が必ず1個になる)
 ***   ← (一段増えるごとに 空白は1つずつ減り、アスタリスクは2つずつ増える)
*****  ← 最下段 ( " " が必ず0になる)
12345  ← 横マスの数 

将想要做的事情转化为文字说明

当你看到应该做的事情时,将其表述成文字形式。

    1. 每次输出段数-1个空白,

 

    1. 然后横向输出段数*2-1个星号,

 

    1. 换行,

 

    重复1至3的过程段数次(其中段数每次增加1)。

为了实现这些,我使用了循环语句。
换句话说,通过按照阶数的数目循环执行上述列表的1到3处理,似乎可以实现它。
而且通过使用for循环在循环内部进行的处理,可以高效地编写,所以使用”嵌套for循环”来进行处理似乎是个不错的选择。

换句话说,在使用4个循环时,可以将1~3的处理包裹其中。

创建一个循环来循环执行步骤②至③的处理操作,循环次数为段的数量。

    • n段のピラミッドを作る場合、iは 0から1段のため「 i < n 」と記述。

 

    ①~②の処理 を内側に入れてループさせる。
for (int i = 0; i < lineCount; i++) {
    // ①~②の処理...
    ....
    ....
    }

②. 显示空白数量为(行数-1)个。

看到之后,可以看出金字塔空行的数量是从上往下递减的。
通过观察之前的三层金字塔,可以看到空行的数量是”(层数-1)个”。
使用上述代码中使用的”每重循环逐渐增加的 i “,就可以做到逐渐减少1。

    • space の初期値は 0 のため、予め1を足しておく。

 

    空白 (” “)は上から一つずつ減る

【Java program】

for (int space = 0; space < dan - i ; space++) {
    System.out.print(" ");
}

③. 在其旁边显示星号,数量为(段数 × 2 – 1)个,并换行

【写作方式】

    • その横に アスタリスクを ( 段数 * 2 – 1 )個表示させる

 

    • アスタリスクの数は何段になっても奇数

 

    一段増えるごとにアスタリスクの数は2つずつ増える

【Java代码】

for (int j = 0; j <i * 2 - 1; j++) {
    System.out.print("*"); 
}

System.out.println(); //改行

以前的循环中,将其重复的次数逐渐增加一次,直到達到所需的段数。

广告
将在 10 秒后关闭
bannerAds