用Java实现实心菱形打印
如何用Java打印实心菱形?
我们可以把菱形拆分看成两个图形,一个正三角和一个倒三角图形,然后我们分别实现正三角和倒三角图形的打印,最后进行拼接成菱形
正三角打印
for (int i = 1; i <= 5; i++) {//外层控制行数 5行
/*空格规律:
第一行===》4个空格
第二行===》3个空格
第三行===》2个空格
第四行===》1个空格
第五行===》0个空格
*/
for (int j = 5; j > i; j--) {//控制空格数,1表示空格
System.out.print("1");
}
/*星号规律:
第一行===》1个星号
第二行===》3个星号
第三行===》5个星号
第四行===》7个星号
第五行===》9个星号
*/
for (int j = 1; j <= 2 * i - 1; j++) {//控制星号数
System.out.print("*");
}
System.out.println();//内层循环完后进行换行
}
效果图
倒三角打印
for (int i = 1; i <= 5; i++) {//外层控制行数 5行
/*空格规律:
第一行===》0个空格
第二行===》1个空格
第三行===》2个空格
第四行===》3个空格
第五行===》4个空格
*/
for (int j = 1; j < i; j++) {// 控制空格数,1表示空格
System.out.print("1");
}
/*星号规律:
第一行===》9个星号
第二行===》7个星号
第三行===》5个星号
第四行===》3个星号
第五行===》1个星号
*/
for (int j = 9; j >= 2 * i - 1; j--) {// 控制星号个数
System.out.print("*");
}
System.out.println();
}
效果图
对两个三角形进行拼接优化打印菱形
Scanner scan = new Scanner(System.in);
System.out.print("请输入需要打印实心菱形的行数:");
int numLine = scan.nextInt();
//对用户输入的数进行判断
while (true) {
if(numLine < 2) {
System.out.print("菱形不能小于两行,请重新输入:");
numLine = scan.nextInt();
}else {
break;
}
} ;
// 正三角
for (int i = 1; i <= numLine; i++) {// 控制行数
for (int j = numLine; j > i; j--) {// 控制空格数
System.out.print(" ");
}
for (int j = 1; j <= 2 * i - 1; j++) {// 控制星号个数
System.out.print("*");
}
System.out.println();
}
// 倒三角
for (int i = 1; i < numLine; i++) {
//为什么拼接后j=0?因为拼接后去掉了最上面的一层空格就变成了从1开始
for (int j = 0; j < i; j++) {// 控制空格数
System.out.print(" ");
}
//同理,星号要减去一行,所以j >= 2 * i + 1而不是j >= 2 * i - 1了
for (int j = 2 * numLine - 1; j >= 2 * i + 1; j--) {// 控制星号个数
System.out.print("*");
}
System.out.println();
}
// 关闭扫描,释放资源
scan.close();
效果图
欢迎大家提供新的思路及解决方法!