輸出矩形
以此矩形案例(4行,9列的矩形)為例
public static void main(String[] args) {
//輸出矩形
for (int i = 1; i <= 4; i++) {//控制行,即4行
for (int j = 1; j <= 9; j++) {//控制輸出的*的個數,每行9個
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果
*********
*********
*********
*********
前面有空格的矩形
以此矩形案例(4行,9列的矩形)為例
public static void main(String[] args) {
//輸出前面有空格矩形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//輸出空格
for (int k = 1; k <= 5; k++) {//控制空格,即每行開始輸出5個空格
System.out.print(" ");
}
for (int j = 1; j <= 9; j++) {//控制輸出的*的個數,每行9個
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果
*********
*********
*********
*********
輸出平行四邊形
以此矩形案例(4行,9列的矩形)為例,要變成平行四邊形
- 第一行前面輸出8個空格
- 第二行前面輸出7個空格
- 第三行前面輸出6個空格
- 第四行前面輸出5個空格
********* 1 8
********* 2 7
********* 3 6
********* 4 5
綜上所述,得出規律:行數+空格數=9
public static void main(String[] args) {
//輸出平行四邊形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//輸出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
System.out.print(" ");
}
for (int j = 1; j <= 5; j++) {//控制輸出的*的個數,每行5個
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果:
*****
*****
*****
*****
輸出三角形
以此案例(4行)為例,要變成三角形
- 第一行前面輸出8個空格,1個星
- 第二行前面輸出7個空格,3個星
- 第三行前面輸出6個空格,5個星
- 第四行前面輸出5個空格,7個星
* 1 8 1
*** 2 7 3
***** 3 6 5
******* 4 5 7
綜上所述,得出規律:行數+空格數=9,2x行數-1=星的個數
public static void main(String[] args) {
//輸出三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//輸出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果:
*
***
*****
*******
輸出菱形
此案例由上面三角形(4行)和下面倒三角形(3行)組合,變成菱形
上面三角形
- 第一行前面輸出8個空格,1個星
- 第二行前面輸出7個空格,3個星
- 第三行前面輸出6個空格,5個星
- 第四行前面輸出5個空格,7個星
下面倒三角形
- 第一行前面輸出6個空格,5個星
- 第二行前面輸出7個空格,3個星
-
第三行前面輸出8個空格,1個星
* 1 8 1 *** 2 7 3 ***** 3 6 5 ******* 4 5 7 ***** 1 6 5 *** 2 7 3 * 3 8 1
綜上所述,得出規律:上面三角形,行數+空格數=9,2x行數-1=星的個數;下面倒三角形,行數+5=空格數,7-2x行數=星的個數
public static void main(String[] args) {
//輸出上面三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//輸出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
System.out.print("*");
}
//換行
System.out.println();
}
//輸出下面倒三角形
for (int i = 1; i <= 3; i++) {//控制行,即3行
//輸出空格
for (int k = 1; k <= i + 5; k++) {//控制空格,行數+5=空格數,即每行開始輸出i+5個空格
System.out.print(" ");
}
for (int j = 1; j <= 7 - 2 * i; j++) {//控制輸出的*的個數,7-2x行數=星的個數,即每行7 - 2 * i個星
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果:
*
***
*****
*******
*****
***
*
輸出空心菱形
此案例由上面三角形(4行)和下面倒三角形(3行)組合,變成菱形,中間星形由空格代替
*
* *
* *
* *
* *
* *
*
得出規律:在輸出星的地方,每行第一個和最後一個輸出星,其餘輸出空格
public static void main(String[] args) {
//輸出上面三角形
for (int i = 1; i <= 4; i++) {//控制行,即4行
//輸出空格
for (int k = 1; k <= 9 - i; k++) {//控制空格,行數+空格數=9,即每行開始輸出9-i個空格
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {//控制輸出的*的個數,2x行數-1=星的個數,即每行2 * i -1個星
//在首和尾輸出星,其餘輸出空格
if (j == 1 || j == 2 * i - 1) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//換行
System.out.println();
}
//輸出下面倒三角形
for (int i = 1; i <= 3; i++) {//控制行,即3行
//輸出空格
for (int k = 1; k <= i + 5; k++) {//控制空格,行數+5=空格數,即每行開始輸出i+5個空格
System.out.print(" ");
}
for (int j = 1; j <= 7 - 2 * i; j++) {//控制輸出的*的個數,7-2x行數=星的個數,即每行7 - 2 * i個星
//在首和尾輸出星,其餘輸出空格
if (j == 1 || j == 7 - 2 * i) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
//換行
System.out.println();
}
}
//輸出結果:
*
* *
* *
* *
* *
* *
*
輸出正方形
以此案例(5行,5列的正方形)為例
public static void main(String[] args) {
//輸出正方形
int len = 5;//正方形邊長
for (int i = 1; i <= len; i++) {//控制行,即4行
for (int j = 1; j <= len; j++) {//輸出星,即每行輸出j個星
System.out.print("*");
}
//換行
System.out.println();
}
}
//輸出結果:
*****
*****
*****
*****
*****
輸出實心菱形
以此案例(5行,5列)為例
- 第一行第一個和最後一個星的位置是3和3
- 第二行第一個和最後一個星的位置是2和4
- 第三行第一個和最後一個星的位置是1和5
- 第四行第一個和最後一個星的位置是2和4
- 第五行第一個和最後一個星的位置是3和3
* 1 3 3
*** 2 2 4
***** 3 1 5
*** 4 2 4
* 5 3 3
public static void main(String[] args) {
//輸出實心菱形
int len = 5;//邊長
int first = len / 2 + 1;//開始輸出星的位置
int end = len / 2 + 1;//結束輸出星的位置
boolean flag = true;//如果是上半部三角形則是true,如果是下半倒三角形則是false
for (int i = 1; i <= len; i++) {//控制行,即4行
for (int j = 1; j <= len; j++) {//輸出星,即每行輸出j個星
if (j >= first && j <= end) {//在每行的起始至結束位置輸出星
System.out.print("*");
} else {
System.out.print(" ");
}
}
//換行
System.out.println();
if(end == len){//最後一個星位置是邊長寬度
flag = false;//下一行,馬上執行下半部倒三角形
}
if(flag){
//在上半三角形,開始輸出星的位置first前移1,結束輸出星的位置end後移1
first--;
end++;
}else {
//在下半倒三角形,開始輸出星的位置first後移1,結束輸出星的位置end前移1
first++;
end--;
}
}
}
//輸出結果:
*
***
*****
***
*
如果想輸出空心菱形則只需要將:
if (j >= first && j <= end)
改成
if (j == first || j == end)