Java典型例题(打印菱形)
题目:利用*号打印出一个菱形图样
分析:下面逐步分析菱形打印的推演过程
推演过程利用单独的方法演示,使用时直接在主方法中调用对应的方法即可。
第一步,打印一行*号
/**
打印出如下图形:*******
*/
public static void print01() {//每次打印一个星星for(int i = 1;i<=7;i++) {System.out.print("*");}System.out.println();
}
第二步,打印出一个矩形
/**
打印出矩形: ****************************
*/
public static void print02() {System.out.println("循环每次打印一个星星");for(int i = 1;i<=4;i++) {//行数for(int j = 1;j<=7;j++) {//星星个数System.out.print("*");}System.out.println();}
}
第三步,打印出一个三角型
/**
打印出如下图形 ****************
规律如下:
行数 *号个数1 12 33 54 7n 2*n-1
*/
public static void print03() {for(int i = 1;i<=4;i++) {//控制行数for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}
第四步,打印出一个正三角型
/**
打印如下图型:****************规律如下:行数 1 2 3 4 n空格 3 2 1 0 总行数-n星星 1 3 5 7 2*n-1
*/
public static void print04() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}
第五步,打印出一个菱形
/*** * * ** **** ****** ******** 行数 1 2 3 4 n* 空格 3 2 1 0 总行数-n* 星星 1 3 5 7 2*n-1* * * ****** **** ** 行数 3 2 1 n* 空格 1 2 3 总行数-n* 星星 5 3 1 2*n-1* * * * */
public static void print05() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}for(int i = 3;i>=1;i--) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关System.out.print("*");}System.out.println();}
}
打印结果如图所示:
思考:如何打印出一个中间部分是一个空心的菱形
public static void print06() {for(int i = 1;i<=4;i++) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关if(j==1||j==2*i-1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}for(int i = 3;i>=1;i--) {//控制行数for(int k = 1;k<=4-i;k++) {//空格的个数System.out.print(" ");}for(int j = 1;j<=2*i-1;j++) {//控制星星个数的时候和行有关if(j==1||j==2*i-1) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}
}
打印结果如图所示:
菱形代码优化
以上实现打印菱形的代码比较复杂,我们可以对代码进行优化
/*
菱形代码优化
*/
public static void print07() {for(int x = -5;x<=5;x++) {for(int y = -5;y<=5;y++) {if((x>0?x:-x)+(y>0?y:-y)<=5) {System.out.print("*");}else {System.out.print(" ");}}System.out.println();}
输出结果如图所示: