【Java】星形金字塔
星号金字塔
我创建了一个名为“星星金字塔”的程序,使用Java输入一个数字,并根据这个数字生成相应层数的金字塔。
这里是完成品。
【10段分のピラミッド】
*
***
*****
*******
*********
***********
*************
***************
*****************
*******************
寻找共同之处
为了思考这个金字塔是如何建造的,我们可以考虑”无论金字塔有多少层都保持不变的共同点”,以及它是通过什么规则建造的。除了上述的10层金字塔外,我们还可以制作一个由3层组成的金字塔,并进行比较。
【3段分のピラミッド】
*
***
*****
当考虑到金字塔的层数无论是10层还是3层都没有变化的部分时
-
- アスタリスクの数は何段になっても奇数
-
- 最上段は アスタリスク が必ず1個になる
-
- 最下段は 空白 が必ず0になる
-
- 一段増えるごとにアスタリスクの数は2つずつ増える
-
- 一段増えるごとに 空白 の数は 1つずつ減る。
- 一段に入力される空白の数は、(段数 – 1)
可以考虑到这一部分。
【3段の場合のピラミッドの場合】
* ← 最上段 ( "*" が必ず1個になる)
*** ← (一段増えるごとに 空白は1つずつ減り、アスタリスクは2つずつ増える)
***** ← 最下段 ( " " が必ず0になる)
12345 ← 横マスの数
将想要做的事情转化为文字说明
当你看到应该做的事情时,将其表述成文字形式。
-
- 每次输出段数-1个空白,
-
- 然后横向输出段数*2-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(); //改行
以前的循环中,将其重复的次数逐渐增加一次,直到達到所需的段数。