闲来无事,练习了一下Java基础中的循环语句。练习循环语句,当然少不了,用*打印出来三角形、空心三角形、菱形等这样的几何图形。
粗心大意,失误两次:
一、三角形
遇到一些小问题:
二、金字塔
由于三角形和金字塔的代码差不多,只有少部分更改,图也可以看的很清楚。所以下面只写一部分代码好啦。
代码实例:
//作者:我 //功能:镂空金字塔 //时间:2018年1月10日 public class Hello{ public static void main(String args[]){ //死去活来法 //int lay=4; int lay=7; for (int i=1;i<=lay;i++ ) { //找出空格规律 //1->3 2->2 3->1 4->0 for(int k=1;k<=lay-i;k++) { System.out.print(" "); } //打印* /*不正确的 for(int j=1;j<=i;j++){ System.out.print("*"); }*/ //打印*的规律 //1->1 2->3 3->5 .... for(int j=1;j<=i*2-1;j++){ if(i==1||i==lay){ //i代表层 System.out.print("*"); }else{ //如果是第一个* if(j==1||j==i*2-1){ System.out.print("*"); }else{ System.out.print(" "); } } } //打印换行 System.out.println(); } } }
三、菱形
菱形的代码是我在网上找的,看懂了逻辑。自己也玩了一下了,在hangshu取值为双数时,实心菱形一点bug。
代码实例:
//网上查找的代码 public class Hello3{ public static void main(String args[]){ int hangshu = 20; int yiban = hangshu / 2 + 1; int yibanduo = hangshu / 2; System.out.println("实心菱形:"); for(int i = 1;i <= hangshu;i++){ if(i <= hangshu/2 + 1){ for(int k = 1;k <= hangshu/2 + 1- i;k++){ System.out.print(" "); } for(int k = 1;k <= i;k++){ System.out.print("* "); } System.out.println(); }else{ for(int k =1;k <= (i -(hangshu/2 + 1));k++){ System.out.print(" "); } for(int k = 1;k <= (2 *(hangshu/2 + 1) - i);k++){ System.out.print("* "); } System.out.println(); } } System.out.println("空心菱形:"); for(int k = 1;k <= yiban;k++){ for(int i = 1;i <= (yiban - k);i++){ System.out.print(" "); } System.out.print("*"); for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){ System.out.print(" "); } if(k != 1){ System.out.print("*"); } System.out.println(); } for(int k = yibanduo;k >=1;k--){ for(int i = 1;i <= (yiban - k);i++){ System.out.print(" "); } System.out.print("*"); for(int i = 1;i <= ( (k - 2) * 2 + 1);i++){ System.out.print(" "); } if(k != 1){ System.out.print("*"); } System.out.println(); } } }