《Java从入门到放弃》JavaSE篇:程序结构
程序的结构一般分为三种:
顺序结构。
选择结构。
循环结构。
一、顺序结构:这个不用多说吧,跟我们平时写文章的顺序一样,从上往下。
二、选择结构:从名字就能看出,要选择嘛,到底是要漂亮滴妹子,还是要有钱滴妹子呢!当然,如果是个吊丝码农滴话,那你就不要多想了,还是老老实实码代码吧···
三、循环结构:循环啊,就是一直转啊转啊转啊,转到出意外为止。
接下来还是老规矩,通过小示例来学习语法吧。
顺序结构:
一、输入姓名和年龄,输出自我介绍。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public static void main(String[] args) { //创建输入数据的对象,具体什么叫对象···,先不用管吧 Scanner input = new Scanner(System.in); String name; //姓名 int age; //年龄 System.out.print( "请输入姓名:" ); name = input.next(); System.out.print( "请输入年龄:" ); age = input.nextInt(); System.out.println( "大家好,我叫" +name+ ",今年" +age+ "岁,请多关照。" ); } |
注意:
这就是一个标准的顺序结构,代码会从上往下执行,如果你把int age;这句话放到最后,那就会在age = input.nextInt();这一行报语法错误了。
结果:
选择结构:
选择结构的语法有四种,我们通过下面的案例来了解。
一、输入你的存款,如果大于5000则加上“壕”的头衔。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public static void main(String[] args) { //创建输入数据的对象,具体什么叫对象···,先不用管吧 Scanner input = new Scanner(System.in); String name; //姓名 int deposit; //存款 System.out.print( "请输入姓名:" ); name = input.next(); System.out.print( "请输入存款:" ); deposit = input.nextInt(); System.out.print( "大家好,我叫" +name); if (deposit> 5000 ){ System.out.print( "(壕)" ); } System.out.println( "。" ); } |
语法:
if( 条件 ){ 要执行的代码 }
注意:
条件成立时会执行{}中的所有代码。
结果:
二、输入你的存款,如果大于5000则加上“壕”的头衔,否则加上“穷13”的头衔。
1
2
3
4
5
6
|
if (deposit> 5000 ){ System.out.print( "(壕)" ); } else { System.out.print( "(穷13)" ); } |
注意:别的代码不用动,只需要在if(){}结构上加上else{}就OK了,else{}表示条件不成立时的执行代码。
结果:
三、输入你的存款,如果大于50000,则加上“神壕”的头衔,否则如果大于30000,则加上“金壕”的头衔,否则如果大于10000,则加上“壕”的头衔,否则加上“穷13”的头衔。
1
2
3
4
5
6
7
8
9
10
11
12
|
if (deposit> 50000 ){ System.out.print( "(神壕)" ); } else if (deposit> 30000 ){ System.out.print( "(金壕)" ); } else if (deposit> 10000 ){ System.out.print( "(壕)" ); } else { System.out.print( "(穷13)" ); } |
注意:这种语法叫多分支选择结构(一般用于选择情况大于2的场合,比如演唱会门票的级别、你的女神的胸肌是A还是BCDEF等)。
结果就不展示了。
四、查询余额请按1,套餐更改请按2,宽带业务请按3,企业业务请按4,人工服务请按5,其它业务请瞎按.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
public static void main(String[] args) { //创建输入数据的对象,具体什么叫对象···,先不用管吧 Scanner input = new Scanner(System.in); int num; System.out.print( "1.查询余额请按1," + "\n2.套餐更改请按2" + "\n3.宽带业务请按3" + "\n4.企业业务请按4" + "\n5.人工服务请按5" + "\n6.其它业务请瞎按" + "\n请选择:" ); num = input.nextInt(); switch (num) { case 1 : System.out.println( "您的余额为0。" ); break ; case 2 : System.out.println( "改完了,请回吧。" ); break ; case 3 : System.out.println( "宽带装好了,请交钱1998¥。" ); break ; case 4 : System.out.println( "请上传企业注册资料。" ); break ; case 5 : System.out.println( "我们正在招聘服务人员,请稍等..." ); break ; default : System.out.println( "乱按好玩吧..." ); break ; } } |
注意:
switch语法一般用于数值类型和布尔类型等值判断的场合,最新版的JDK支持String类型了。小伙伴们可以自己试试。
每个case后的语句执行完后都有个小尾巴(break;),表示从这儿退出switch结构,大家可以把这个小尾巴去掉看看结果有什么不一样。
结果:
循环结构:
循环结构常用的有四种:while、do...while、for、foreach(后面讲集合时再介绍)。
对应的语法都很简单,我们通过求100以内的奇数和来了解一下,后面再来分析一个经典案例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public static void main(String[] args) { //求100以内的奇数和 //1.while循环 int i = 1 ; //循环的初值 int s = 0 ; //保存和 while (i<= 100 ) { //循环的条件 s += i; //循环的内容 i += 2 ; //循环的步长(也就是循环变量的值如何变化) } System.out.println( "while循环结果:" +s); //变量值还原 i = 1 ; s = 0 ; //2.do...while循环 do { s += i; i += 2 ; } while (i<= 100 ); System.out.println( "do...while循环结果:" +s); //变量值还原 s = 0 ; //3.for循环 for (i = 1 ; i <= 100 ; i+= 2 ) { s += i; } System.out.println( "for循环结果:" +s); } |
执行结果:
从上面的语法应该可以看出,循环主要有四个点:初值、条件、步长、循环体(内容)。那么这三种循环的语法有什么区别呢?
while循环:侧重于不确定循环次数的场合,先判断,如果条件成立则进入循环。
do...while循环:侧重于不确定循环次数的场合,先执行一次,之后如果条件成立则时入循环。
for循环:侧重于确定循环次数的场合。
与循环配合使用的还有两个关键字:continue和break;
他们的作用,看代码和结果吧:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public static void main(String[] args) { for ( int i = 0 ; i < 10 ; i++) { if (i== 5 ){ continue ; } System.out.print(i+ "," ); } System.out.println( "\n=======================" ); for ( int i = 0 ; i < 10 ; i++) { if (i== 5 ){ break ; } System.out.print(i+ "," ); } } |
结果:
注意到两个的区别了吧
运行continue后,就不再执行循环里面continue后面的代码,直接运行i++去了。
而运行break后,则直接跳出了循环,后面的都不执行了。
经典案例:登录功能,如果账号密码输入正确则登录成功,否则请再次输入密码。
分析:
登录时要输入几次账号密码?很明显不知道啊!!!所以for循环被排除了。
然后再判断,是要先输入账号密码后判断,还是先判断后再输入账号密码呢?
这也很明显,要先输入了才需要判断啊!!!所以while循环也被排除了。
最后就剩下do...while循环了。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public static void main(String[] args) { //模拟登录功能 //分析过程: //1.定义保存账号和密码的变量 Scanner input = new Scanner(System.in); String inLoginID; String inLoginPWD; //2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码 String loginID = "liergou" ; String loginPWD = "haha250" ; //3.输入账号和密码 do { System.out.print( "请输入账号:" ); inLoginID = input.next(); System.out.print( "请输入密码:" ); inLoginPWD = input.next(); //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法), //如果相同等提示登录成功,循环结束,否则提示重新输入 if (inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){ System.out.println( "登录成功!" ); break ; } else { System.out.println( "账号和密码不匹配,请重新输入!" ); } } while ( true ); } |
如果你非要使用while和for,那··············当然也是可以滴,只不过代码复杂度会上升,特别是使用for来写的话会很奇怪,大伙可以看看:
这是使用while的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
public static void main(String[] args) { //模拟登录功能 //分析过程: //1.定义保存账号和密码的变量 Scanner input = new Scanner(System.in); String inLoginID; String inLoginPWD; //2.因为还没学习数据库,所以定义两个变量保存正确的账号和密码 String loginID = "liergou" ; String loginPWD = "haha250" ; //3.输入账号和密码 System.out.print( "请输入账号:" ); inLoginID = input.next(); System.out.print( "请输入密码:" ); inLoginPWD = input.next(); while ( true ){ //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法), // 如果相同等提示登录成功,循环结束,否则提示重新输入 if (inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){ System.out.println( "登录成功!" ); break ; } else { System.out.println( "账号和密码不匹配,请重新输入!" ); //下面的代码重复了 System.out.print( "请输入账号:" ); inLoginID = input.next(); System.out.print( "请输入密码:" ); inLoginPWD = input.next(); } } } |
下面是使用for的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
for (; true ;){ //4.判断输入的账号和密码与正确的是否相同(判断字符串是否相等使用equals方法), // 如果相同等提示登录成功,循环结束,否则提示重新输入 if (inLoginID.equals(loginID) && inLoginPWD.equals(loginPWD)){ System.out.println( "登录成功!" ); break ; } else { System.out.println( "账号和密码不匹配,请重新输入!" ); //下面的代码重复了 System.out.print( "请输入账号:" ); inLoginID = input.next(); System.out.print( "请输入密码:" ); inLoginPWD = input.next(); } } |
最后,再布置几个练习,各位看官自己分析并练习练习吧,看具体使用哪种循环最好。
1. 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
2. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
3. 球从100M高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地时,共经过多少M?第10次反弹多高?
4. 任意输入一个整数(小于6位),求它的位数询问
5. “我爱你,嫁给我吧?”,选择“你喜欢我吗?(y/n):",如果输入为y则打印”我们形影不离“,若输入为n,则继续询问
如果有不确定答案的练习,就在评论里讨论吧···
“软件思维”博客地址:51CTO,博客园,感兴趣的小伙伴可以去看相关的其它博文。
《Java从入门到放弃》JavaSE篇:程序结构的更多相关文章
- Java性能测试从入门到放弃-概述篇
Java性能测试从入门到放弃-概念篇 辅助工具 Jmeter: Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试.JMeter 可以用于对服务器.网络 ...
- Java快速入门-03-小知识汇总篇(全)
Java快速入门-03-小知识汇总篇(全) 前两篇介绍了JAVA入门的一系小知识,本篇介绍一些比较偏的,说不定什么时候会用到,有用记得 Mark 一下 快键键 常用快捷键(熟记) 快捷键 快捷键作用 ...
- Java从入门到放弃18---Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法
Java从入门到放弃18—Map集合/HashMap/LinkedHashMap/TreeMap/集合嵌套/Collections工具类常用方法01 Map集合Map集合处理键值映射关系的数据为了方便 ...
- C++第三篇--程序结构
C++第三篇--程序结构 1. 初识程序结构 将类中的成员函数全部放在类外实现,类中只负责声明该函数 person.cpp #include <stdio.h> class Person{ ...
- golang快速入门(六)特有程序结构
提示:本系列文章适合对Go有持续冲动的读者 阅前须知:在程序结构这章,更多会关注golang中特有结构,与其他语言如C.python中相似结构(命名.声明.赋值.作用域等)不再赘述. 一.golang ...
- 《Java从入门到放弃》JavaSE入门篇:变量
变量是什么玩意呢? 变量,顾名思义就是能变化的量 - - 好吧,举个栗子. 图片上的各种餐具,就是变量,因为同一个盘子可以在不同的时间装不同的菜,在这一桌可以装土豆肉丝,在下一桌可以装清炒黄瓜(当然, ...
- 《Java从入门到放弃》JavaSE入门篇:面向对象语法一(入门版)
前一次简单说明了一下面向对象编程的概念,今天我们就把这些概念通过Java语法来实现,然后看看效果. 来看第一个案例:定义女神类,再根据女神类创建三个女神对象,并使用女神对象的属性和方法. 第一步:定义 ...
- 《Java从入门到放弃》JavaSE入门篇:文件操作
Java中的文件操作还有点小复杂··· 不过没关系,我会把它讲得很简单,嘿嘿嘿!!! 在讲Java中的文件操作前,先了解一个概念--"流",比如我们把一个杯子的水倒到另一个同样大小 ...
- 《Java从入门到放弃》JavaSE入门篇:异常
异常!!!看看生活中的异常例子: 正常情况下,从家到公司上班,只需要20分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异 ...
随机推荐
- Nginx 反向代理、负载均衡
## Nginx 反向代理. (一)简介 一.什么是代理服务器 客户机原本发送给服务器的请求,不会直接发送给服务器,而是先发送给代理服务器:经过代理服务器处理后转发给服务器:服务器数据处理后转回给代理 ...
- 我JAVA修炼之路
今天起,我会不定期更新我的java修炼之路, 2017.7.10,星期一 我参见了河南青云的培训班,这一天是我们的开班典礼. 我会不定期的总结我的学习笔记,大家喜欢的可以看看,不喜勿喷. 写代码: 1 ...
- oracle高级查询(实例基于scott用户四张表)
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...
- Spring源码情操陶冶-AbstractApplicationContext#finishBeanFactoryInitialization
承接前文Spring源码情操陶冶-AbstractApplicationContext#registerListeners 约定web.xml配置的contextClass为默认值XmlWebAppl ...
- HDOJ-2009 求数列的和
Problem Description 数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和. Input 输入数据有多组,每组占一行,由两个整数n(n<10000 ...
- 【Django】Django与jinja的不同
1. http://jinja.pocoo.org/docs/dev/switching/#django 目前已了解的不同: 1) 某元素是否存在 if xxx Django if xxx is ...
- 移动端https抓包那些事--初级篇
对于刚刚进入移动安全领域的安全研究人员或者安全爱好者,在对手机APP进行渗透测试的时候会发现一个很大的问题,就是无法抓取https的流量数据包,导致渗透测试无法继续进行下去. 这次给大家介绍一些手机端 ...
- ServletAPI的获取
Action中获取ServletAPI,三种方式 (1)通过ActionContext获取(只是获取并操作了域空间,并不是真正的ServletAPI对象) 在struts2框架中,通过Action的执 ...
- python-快速排序,两种方法→易理解
快速排序(Quicksort)是对冒泡排序的一种改进. 快速排序由C. A. R. Hoare在1962年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另 ...
- Android文件上传与下载
文件上传与下载 文件上传 -- 服务端 以Tomcat为服务器,Android客服端访问Servlet,经Servlet处理逻辑,最终将文件上传,这里就是简单模拟该功能,就将文件上传到本机的D:\\u ...