1.先打印一个矩形
*****
*****
*****
*****
*****
package example;
public class Stars {
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i=1;i<=5;i++) {
System.out.println("*****");
}
}
}
2.打印半个金字塔
*
**
***
****
*****
package example;
public class Stars {
/**
* //第1层 有1个*
** //第2层 有2个*
*** //第3层 有3个*
**** //第4层 有4个*
***** //第5层 有5个*
*/
public static void main(String[] args) {
//i表示层数
for(int i=1;i<=5;i++) {
//控制打印每层的*个数
for(int j=1;j<=i;j++) {
System.out.print("*");
}
//每打印一层的*后,就换行
System.out.print("\n");
}
}
}
3.打印整个金字塔
*
***
*****
*******
*********
package example;
public class Stars {
/**
化繁为简:
1.打印一个矩形
*****
*****
*****
*****
*****
2.打印半个金字塔
* //第1层 有1个*
** //第2层 有2个*
*** //第3层 有3个*
**** //第4层 有4个*
***** //第5层 有5个*
3.打印整个金字塔
* //第1层 有1个* 1*2-1=1 空格数量4
*** //第2层 有3个* 2*2-1=3 空格数量3
***** //第3层 有5个* 3*2-1=5 空格数量2
******* //第4层 有7个* 4*2-1=7 空格数量1
********* //第5层 有9个* 5*2-1=9 空格数量0
可发现每层*的个数为 层数*2-1 空格数量为 总层数-层数
*/
public static void main(String[] args) {
//i表示层数
for(int i=1;i<=5;i++) {
//打印*之前要先打印空格,输出每层对应的空格
for(int k=1;k<=5-i;k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j=1;j<=2*i-1;j++) {
System.out.print("*");
}
//每打印一层的*后,就换行
System.out.print("\n");
}
}
}
4.打印空心金字塔
*
* *
* *
* *
*********
package example;
public class Stars {
/**
化繁为简:
1.打印一个矩形
*****
*****
*****
*****
*****
2.打印半个金字塔
* //第1层 有1个*
** //第2层 有2个*
*** //第3层 有3个*
**** //第4层 有4个*
***** //第5层 有5个*
3.打印整个金字塔
* //第1层 有1个* 1*2-1=1 空格数量4
*** //第2层 有3个* 2*2-1=3 空格数量3
***** //第3层 有5个* 3*2-1=5 空格数量2
******* //第4层 有7个* 4*2-1=7 空格数量1
********* //第5层 有9个* 5*2-1=9 空格数量0
可发现每层*的个数为 层数*2-1 空格数量为 总层数-层数
4.打印空心金字塔
* //第1层 有1个* 当前行第一个为*,最后一个也为*
* * //第2层 有2个* 当前行第一个为*,最后一个也为*
* * //第3层 有2个* 当前行第一个为*,最后一个也为*
* * //第4层 有2个* 当前行第一个为*,最后一个也为*
********* //第5层 有9个* 全部为*
*/
public static void main(String[] args) {
//i表示层数
for(int i=1;i<=5;i++) {
//打印*之前要先打印空格,输出每层对应的空格
for(int k=1;k<=5-i;k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j=1;j<=2*i-1;j++) {
//当前行第一个为*,最后一个也为*
if(j==1||j==2*i-1||i==5) {
System.out.print("*");
}else { //其他情况输出空格
System.out.print(" ");
}
}
//每打印一层的*后,就换行
System.out.print("\n");
}
}
}
5.层数做成变量
package example;
public class Stars {
/**
化繁为简:
1.打印一个矩形
*****
*****
*****
*****
*****
2.打印半个金字塔
* //第1层 有1个*
** //第2层 有2个*
*** //第3层 有3个*
**** //第4层 有4个*
***** //第5层 有5个*
3.打印整个金字塔
* //第1层 有1个* 1*2-1=1 空格数量4
*** //第2层 有3个* 2*2-1=3 空格数量3
***** //第3层 有5个* 3*2-1=5 空格数量2
******* //第4层 有7个* 4*2-1=7 空格数量1
********* //第5层 有9个* 5*2-1=9 空格数量0
可发现每层*的个数为 层数*2-1 空格数量为 总层数-层数
4.打印空心金字塔
* //第1层 有1个* 当前行第一个为*,最后一个也为*
* * //第2层 有2个* 当前行第一个为*,最后一个也为*
* * //第3层 有2个* 当前行第一个为*,最后一个也为*
* * //第4层 有2个* 当前行第一个为*,最后一个也为*
********* //第5层 有9个* 全部为*
先死后活:
5.层数做成变量 int totalLevel = 10
*/
public static void main(String[] args) {
int totalLevel = 10;
//i表示层数
for(int i=1;i<=totalLevel;i++) {
//打印*之前要先打印空格,输出每层对应的空格
for(int k=1;k<=totalLevel-i;k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j=1;j<=2*i-1;j++) {
//当前行第一个为*,最后一个也为*
if(j==1||j==2*i-1||i==totalLevel) {
System.out.print("*");
}else { //其他情况输出空格
System.out.print(" ");
}
}
//每打印一层的*后,就换行
System.out.print("\n");
}
}
}
6.扩展题:打印一个 空心菱形
思路分析:把空心菱形分成两部分,即上三角与下三角。上三角通过上面的练习我们已经知道怎么去编写程序了,模仿上三角写下三角。
package example;
public class Rhombus {
public static void main(String[] args) {
// 打印上三角
for(int i = 1;i<=5;i++) { //i表示上三角的层数
//打印*之前要先打印空格k,输出每层对应的空格5-i
for(int k = 1;k<=5-i;k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int j = 1;j<=2*i-1;j++) { //j为实心菱形情况下第几个*
if(j ==1||j==2*i-1) {
//当前行第一个为*,最后一个也为*
System.out.print("*");
}else { //其他情况输出空格
System.out.print(" ");
}
}
System.out.print("\n");
}
//打印下三角
for(int x=1;x<=4;x++) { //x最高只能看成4层
//打印*之前要先打印空格z,输出每层对应的空格x
for(int z=1;z<=x;z++) {
System.out.print(" ");
}
//控制打印每层的*个数
for(int y=1;y<=9-2*x;y++) { //y为实心菱形情况下第几个*
if(y ==1||y ==9-2*x) {
//当前行第一个为*,最后一个也为*
System.out.print("*");
}else { //其他情况输出空格
System.out.print(" ");
}
}
System.out.print("\n");
}
}
}
提问:你还可以自己给自己增加难度,比如换成变量怎么改
本次小项目来自B站韩顺平老师的视频,快来跟我一起学习吧!!!