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 1
2 3
3 5
4 7
n 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();
}
输出结果如图所示: