java基础图形题 (1)三角形 与 菱形

mac2022-06-30  83

目前自己的目标只是能实现功能就可以,然后简单优化一下,跟大佬们还是差了十万八千里的.博客记录为主,希望能对初学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循环题 循环输出五角星的各种图形
最新回复(0)