目前自己的目标只是能实现功能就可以,然后简单优化一下,跟大佬们还是差了十万八千里的.博客记录为主,希望能对初学java的朋友有所帮助,共同学习.发现有说得不清楚的地方,欢迎留言询问.
先说下思路:
目的是输出由 星号 和 空格 组成的三角形 与 菱形, 首先呢因为计算机是从上向下打印(还是输出,不清楚具体区别,意思懂了就好不影响.) ,所以很简单就会想到使用嵌套的for循环,其中一个控制行数,了另一个则输出空格.与星号 另外行数是自定义的,所以循环中的变量范围就需要找到一定的规律. (建议可以在纸上画画,帮助理解)
第一题:
System.out.print("请输入行数:"); int hangShu = input.nextInt(); for(int i = 1 ; i<=hangShu ;i++) //i为行数 { for(int j = hangShu-i ; j>0 ; j--) //循环用来控制三角形左侧空格的输出 { System.out.print(" "); } for(int k = 1 ; k<=2*i-1 ; k++ ) //循环用来控制 *的输出,至于为什么范围是k=2*i-1 这就是个数学题找规律 { System.out.print("*"); } System.out.println(); }第二题:
System.out.print("请输入行数"); int hangShu = input.nextInt(); for(int l = 1 ; l<=hangShu ;l++) //l为正在操作(输出)的行数 { for(int m = l ; m>=1 ; m--) //循环用来控制三角形外空格的输出 { System.out.print(" "); } for(int n = 1 ; n<=hangShu-l*2 ; n++) //控制*的输出 { System.out.print("*"); } System.out.println(); }第三题:
输出图形
因为有上面两道题的铺垫,所以我也同样将这个图形分成上下两部分.中间星号最多的那一条由上半部分输出.
for(int i = 1 ; i<=4 ;i++) //控制上半部分的循环,i为上半部分的行数 , //菱形中间也就是最长的那一条,也由这个循环控制输出 { for(int j = 4-i ; j>0 ; j--) //循环用来控制上半部分菱形外空格的输入 { System.out.print(" "); } for(int k = 1 ; k<=2*i-1 ; k++ ) //循环用来控制 * 的输入 { System.out.print("*"); } System.out.println(); } for(int l = 1 ; l<=3 ;l++) //输出下半部分的循环,l为下半部分的行数 { for(int m = l ; m>=1 ; m--) //循环用来控制下半部分菱形外空格的输出 { System.out.print(" "); } for(int n = 1 ; n<= 7-l*2 ; n++) //控制下半部分*号的输出 { System.out.print("*"); } System.out.println(); }
第四题:
输出图形
for(int i = 1 ; i<=4 ;i++) //控制上半部分的循环,i为上半部分的行数 , //菱形中间也就是最长的那一条,也由这个循环控制输出 { for(int j = 4-i ; j>0 ; j--) //循环用来控制上半部分菱形外空格的输入 { System.out.print(" "); } for(int k = 1 ; k<=2*i-1 ; k++ ) //循环用来控制 * 的输入 { if(i >= 2 && (k > 1 && k != 2*i-1)) //3个条件都满足才能输出空格,上半部分第一行不需要输出空格, //每行第一个为*,每行末尾为* { System.out.print(" "); }else { System.out.print("*"); } } System.out.println(); } for(int l = 1 ; l<=3 ;l++) //输出下半部分的循环,l为下半部分的行数 { for(int m = l ; m>=1 ; m--) //循环用来控制下半部分菱形外空格的输出 { System.out.print(" "); } for(int n = 1 ; n<= 7-l*2 ; n++) //控制下半部分*号的输出 { if(l!= 3 && (n > 1 && (n!=7-l*2)) ) //三个判断都满足时才能输出 ,第一个判断 下半部分最后一行没有空格 //行首尾为* { System.out.print(" "); }else { System.out.print("*"); } } System.out.println(); }最开始的想法是,菱形同样可以自定义总行数,后来发现当输入7行与8行时,输出的图形都是7行,也就是出了错,所以临时改成这两个,自定义行数的方法,又空时再想想.
(初学java,博客记录为主,轻喷,错误想必不少,如果您能指出,不胜感激,部分内容非原创,来源于百度)
转载于:https://www.cnblogs.com/j1639797/p/9599897.html
相关资源:java循环题 循环输出五角星的各种图形