用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();
效果图
欢迎大家提供新的思路及解决方法!