使用Java的嵌套循环打印出平行四边形、等腰三角形、棱形、矩形的星星图案(Java工程师面试必备)
第一遍是看了视频,听老师讲解嵌套循环的使用,然后到星星图形这一步,当时都觉得听明白了,但是自己去做,就是写不出来
第二遍看了赵老师的教程,看了好熟悉的感觉,还是自己写不出来
第三遍找网上关于图形的嵌套循环讲解,说实话,每个例子都好烂,而且还有错误
第四遍,昨晚上回到家,看了2集<欢乐颂>后,觉得想不通心里实在难受的慌,就跟不做开发已经几年的老公请教了一下。。被教导说你先要理解什么是嵌套循环,嵌套循环是怎么执行的。。。balabala.......
第五遍,自己又去分析思路,感觉上有点开窍了,那4个图形,矩形、等腰三角形、平形四边形、棱形
分析思路:
1、平形四边形:
*****
*****
*****
*****
*****
首先,我总体是要运行5行的,这是第一层的循环
然后,第一行的循环,包括4个空格+5颗星
.......
根据视频中老师的教法,还是弄个列表好看一些
行 = 空格 + 星
1 4 5
2 3 5
3 2 5
4 1 5
5 0 5
分析上面这个公式:
第1列,行数是自增的,1、2、3、4、5给它弄个for循环啦for(int i=1;i<=5;i++)
第2列和第3列,是同一层的,所以注意循环语法的位置,但他们都是第1列的里面的东西,你可以认为第1列是和,第2和第3列是组成第1列的元素,所以第1列的for应该是最外层的
那么第2列空格,要找一个与现有变量i和已知行数能扯上关系,且每行都通用的表达式,5-i 不就是吗。那么,第2列,我第一次执行4次,每次输出一个空格,第二次。。。。。。以此类推
第3列星,固定都是5,都不想再说什么了,直接循环5次,每次取1颗星呗
代码如下:
For(int i=1;i<=5;i++){
For(int j=1;j<=(5-i);j++){
System.out.print(“ ”);//每次打印1个空格,根据j的值,来确定每次空格的数量
}
For(int k=1;k<=5;k++){
System.out.print(“*”);//每次打印1颗星,它要循环5层,就是5颗星
}
System.out.println();//每一行后,我要换行
}
2、矩形
这个本身比较简单,都不太想列。就是每行5颗星
第一行用个循环输出5颗星,需要输5行,那就外面再加一层循环吧!
这里要注意,每一行的换行,是放在外层循环里,和输出的每一行是同级的
for(int j=1;j<=5;j++){
for(int i=1;i<=5;i++){
System.out.print("*");
}
System.out.println();
}
3、等腰三角形
*
***
*****
*******
*********
***********
还是一样的分析步骤,一共有6行,第一行由空格和*组成,
行 = 空格 + 星
1 5 =6-1 1 =2*1-1
2 4 =6-2 3=2*2-1
3 3 =6-3 5=2*3-1
4 2 =6-4 7=2*4-1
5 1 =6-5 9=2*5-1
6 0 =6-6 11=2*6-1
这次,星星和空格的循环次数都不是固定的,都需要与i的值来扯上点关系,发挥你的想像找个与I相关的表达式吧
看上图,空格的循环总次数每一行应该是6-i
星星,也要扯个表达式与i或空格相关:2*i-1
好啦,找表达式,也是个脑力活,我这脑子明显不够用了!!!!
for(int i=1;i<=6;i++){
for(int j=1;j<=6-i;j++){
System.out.print(" ");
}
for(int k=1;k<=(2*i)-1;k++){
System.out.print("*");
}
System.out.println();
}
4、棱形:切,不就是2个等腰三角形嘛,分解成2个等腰三角形,同层连接起来不就行了嘛
*
***
*****
*******
*********
*********** 从这里上半部分我们在等腰三角形中已打印出来了,就只用再把下面打出来
*********
*******
*****
***
*
一样的分析步骤:
行 空格 星
1 1 9 =9-2*(1-1)
2 2 7=9-2*(2-1)
3 3 5=9-2*(3-1)
4 4 3=9-2*(4-1)
5 5 1=9-2*(5-1)
for(int i=1;i<=6;i++){
for(int j=1;j<=6-i;j++){
System.out.print(" ");
}
for(int k=1;k<=(2*i)-1;k++){
System.out.print("*");
}
System.out.println();
}
for(int a=1;a<=5;a++){
for(int b=1;b<=a;b++){
System.out.print(" ");
}
for(int c=1;c<=9-2*(a-1);c++){
System.out.print("*");
}
System.out.println();
}
//倒三角也可以这样写:
for(int j=4;j>0;j--){
for(int k=1;k<=5-j;k++){
System.out.print(" ");
}
for(int a=1;a<=2*j-1;a++){
System.out.print("*");
}
System.out.println();
}
总结:那个星星的表达式好难找。。。。这跟小学2年级暑假作业上的算术题一样难。。。。
使用Java的嵌套循环打印出平行四边形、等腰三角形、棱形、矩形的星星图案(Java工程师面试必备)的更多相关文章
- java利用反射打印出类的结构
1 输入一个类名:java.lang.String将打印出String类定义的结构,例如: public final class java.lang.String { public java.lang ...
- java如何LOG打印出日志信息
log4j 记录日志方式 log4j 是apache 提供的记录日志的jar 档. 下载路径: http://logging.apache.org/log4j/1.2/download.html 这里 ...
- jvm系列(八):jvm知识点总览-高级Java工程师面试必备
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功.对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后 ...
- JVM知识点总览-中高级Java工程师面试必备
对于搞开发的我们其实也是一样,现在流行的框架越来越多,封装的也越来越完善,各种框架可以搞定一切,几乎不用关注底层的实现,初级程序员只要熟悉基本的使用方法,便可以快速的开发上线:但对于高级程序员来讲,内 ...
- JVM 知识点总览 - 高级 Java 工程师面试必备
在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功.对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来取胜了,但是练到高手之后 ...
- JVM(8):JVM知识点总览-高级Java工程师面试必备
http://www.importnew.com/23792.html jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点 ...
- JVM知识点总览-高级Java工程师面试必备
jvm 总体梳理 jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 当然这些知识点在之前的文章中都有详细的介绍,这里只做主干的梳理 这里画了一个思维导图, ...
- javap 可以打印出用于jni调用的java函数的签名信息
javap可以打印出java的字节码: -c Prints out disassembled code, i.e., the instructions that comprise the Ja ...
- Java基础知识强化07:打印出空心菱形
1.如图打印出空心菱形: 2.下面是逻辑实现代码: package himi.hebao04; import java.util.Scanner; public class TestDemo08 { ...
随机推荐
- jenkins忘记管理员登陆密码的补救措施
jenkins可以作为我们日常运维过程中代码上线的发版平台,所以对jenkins的安全可靠的维护是十分重要的. 1)在登陆jenkins的时候,如果忘记普通用户的登陆密码,只要能用管理员账号登陆,还可 ...
- treepanel加滚动条
- Sql Server UniCode编码解码
); set @s = N'揶'; select UniCode(@s),nchar(UniCode(@s)); 在 SQL Server 中处理 Unicode 字串常数时,您必需在所有的 Unic ...
- 逆向最大匹配分词算法C#
逆向顺序 句子:大家好我叫XX我是一名程序员 程序员 -> 序员 -> 员 名程序 -> 程序 -> 序 一名程 -> 名程 -> 程 是一名 -> 一名 - ...
- 将Html文档整理为规范XML文档
有多种方式可以在.NET 平台进行HTML文件解析.数据提取,其中最简单.稳妥的办法是先使用工具将Html文档整理成XML文档,再通过XML Dom模型或XPath灵活地进行数据处理.SGML便是一个 ...
- Eclipse系列:如何断点调试web项目
一直不知道如何在Eclipse中断点调试跟踪问题,今天试了一把,大致的步骤如下: 1)事先在需要断点跟踪的代码行左侧空白处双击处设置断点: 2)在工程列表中选中要调试的工程,然后点击Debug on ...
- 反射中getMethods 与 getDeclaredMethods 的区别
public Method[] getMethods()返回某个类的所有公用(public)方法包括其继承类的公用方法,当然也包括它所实现接口的方法.public Method[] getDeclar ...
- [CareerCup] 4.6 Find Next Node in a BST 寻找二叉搜索树中下一个节点
4.6 Write an algorithm to find the'next'node (i.e., in-order successor) of a given node in a binary ...
- MPMoviePlayerViewController的使用 (不直接将播放器放到主视图控制器,而是放到一个内部模态视图控制器中)
其实MPMoviePlayerController如果不作为嵌入视频来播放(例如在新闻中嵌入一个视频),通常在播放时都是占满一个屏幕的,特别是在 iPhone.iTouch上.因此从iOS3.2以后苹 ...
- windows2003 单网卡 搭建vpn ,windows 2008 R2 类似吧。网上转的,自己加了点经验总结
先说说可能的坑,也就是我自己搭建的时候碰到的问题. 其实搭建起来很简单,我不知道我总结的对还是不对,但是按下面这样操作做绝对能搭好!因为我就是按这样搭起来的,但是我发现,好像pptp已经被墙了,我也不 ...