03 流程控制
2019-04-28 08:25:22来源:博客园 阅读 ()
1.1 本质重点
[1] 分支流程控制(if/if…else…/if…elseif…else/switch)
[2] 循环流程控制(while dowhile for)
1.2 流程控制分类
java中存在3中流程控制
顺序结构
分支结构
循环结构
1.3 随机数(A)
java中如何产生随机数?
public class Test01{ public static void main(String[] args){ // 产生一个随机数 范围是[0,1) double r = Math.random(); System.out.println("r="+r); } }
产生一个随机整数,范围在[10,30]?
[0,1) * 21 => (int)[0,21) => [0,20]+10=> [10,30]
[0,1) * 11 => (int)[0,11) => [0,10]+10 =>[10,20]
=>
产生一个随机整数,范围在[m,n]
(int)(Math.random()* (n-m+1)) + m
[100,200] <=> (int)(Math.random()*(101)) + 100
产生一个随机整数,范围在(m,n) <==> [m+1,n-1]
[m,n)
(m,n]
// import java.lang.Math; public class Test01{ public static void main(String[] args){ // 产生一个随机数范围在[10,20] double r2 = (int)(Math.random()*(20-10+1)) + 10; System.out.println("r2 = " + r2); } }
1.4 分支结构
1.4.1 if 单分支
if(表达式){ 语句… }
如果表达式的结果为true,就执行语句块中语句,否则,跳转语句块。
1.4.2 if 双分支
if(表达式){ 语句1 }else{ 语句2 }
1.4.3 if多分支
if(表达式1){ 语句1 }else if(表达式2){ 语句2 }else if(表达式3){ 语句2 }… else{ 语句n }
import java.util.Scanner; public class Test05{ public static void main(String[] args){ // 需求: Scanner sc = new Scanner(System.in); System.out.println("请输入星期:"); int week = sc.nextInt(); if(week == 1){ System.out.println("上课"); }else if(week == 2){ System.out.println("上课"); }else if(week == 3){ System.out.println("练习"); }else if(week == 4){ System.out.println("上课"); }else if(week == 5){ System.out.println("上课"); }else if(week == 6){ System.out.println("上课"); }else{ System.out.println("练习"); } } }
注意:
理论上else if 没有数量限制,但代码的优雅性出发,建议分支不要操作4层
// 优化 if(week == 3 || week == 7){ System.out.println("练习"); }else{ System.out.println("上课"); }
能用单分支,就不要用双分支;
能用双分支,就不要用多分支。
需求:对成绩评级
if(score >= 90){ System.out.println("优秀"); }else if(score >=80){ System.out.println("良好"); }else if(score >= 60){ System.out.println("中等"); }else{ System.out.println("差"); }
if(score < 60){ System.out.println("差"); }else if(score < 80){ System.out.println("中等"); }else if(score < 90){ System.out.println("良好"); }else{ System.out.println("优秀"); }
总结:
大于大的值,用 > 号
小于小的值,用 < 号
1.4.4 if 嵌套
实际开发过程中,很多时候需要进行多个条件的分支
public class Test10{ public static void main(String[] args){ int time = 9; char gender = '男'; if(time < 10){ // 决赛 if(gender == '男'){ System.out.println("进入男子组"); }else{ System.out.println("进入女子组"); } }else{ // 淘汰 System.out.println("没能进入决赛") } } }
1.5 switch 分支
switch 多值匹配分支,语法:
switch (表达式) { case 值1 : 语句序列; [break]; case 值2: 语句序列; [break] ; … … … … … [default: 默认语句 ;] }
public class Test12{ public static void main(String[] args){ int week = 8; switch(week){ case 1:{ System.out.println("上课"); break; } case 2:{ System.out.println("上课"); break; } case 3:{ System.out.println("练习"); break; } case 4:{ System.out.println("上课"); break; } case 5:{ System.out.println("上课"); break; } case 6:{ System.out.println("上课"); break; } case 7:{ System.out.println("练习"); break; } default:{ System.out.println("都不匹配..."); break; } } } }
表达式的值是什么类型时才可以支持匹配?整形、字符
jdk1.7之后,支持字符串的匹配,不到迫不得已,不要用字符串匹配。
特殊情况1:省略break造成错误匹配。-> 直到遇到break结束。
public class Test15{ public static void main(String[] args){ char c = 'e'; // aeiou 元音 switch(c){ case 'a':{ System.out.println("元音"+c); // break; } case 'e':{ System.out.println("元音"+c); // break; } case 'i':{ System.out.println("元音"+c); break; } case 'o':{ System.out.println("元音"+c); break; } case 'u':{ System.out.println("元音"+c); break; } default:{ System.out.println("辅音"+c); break; } } } }
特殊情况2:合理地省略break
public class Test15{ public static void main(String[] args){ int week = 6; switch(week){ case 1: case 2: case 4: case 5: case 6:{ System.out.println("上课"); break; } default:{ System.out.println("练习"); break; } } } }
原文链接:https://www.cnblogs.com/aknife/p/10784481.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Eureka注册客户端
- Java学习之第二天 2020-06-11
- SpringBoot通过web页面动态控制定时任务的启动、停止、创建 2020-06-09
- Spring12_Spring中的事务控制 2020-06-07
- 架构设计 | 异步处理流程,多种实现模式详解 2020-06-04
- Java必备主流技术流程图,写得非常好! 2020-05-29
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash