【原】Java学习笔记005 - 流程控制
package cn.temptation; public class Sample01 {
public static void main(String[] args) {
// 程序的流程控制(流程结构):顺序结构、选择结构、循环结构 // 顺序结构:从上向下,顺序执行
System.out.println("出生...");
System.out.println("享受人生...");
System.out.println("挂了...");
}
}
package cn.temptation; public class Sample02 {
public static void main(String[] args) {
// 选择结构:1、if语句块; 2、switch语句块 // if语句块 // 形式1、if(比较表达式) { ... }
int i = 2; // if (i != 3) {
// System.out.println(i);
// } // 注意:
// 1、比较表达式的结果必须是一个boolean类型的值
// 2、if语句如果不使用大括号,语法上可以;但是不使用大括号,if语句块只会影响其后的一行语句 // if (i != 3)
// System.out.println(i); // 下面执行结果为2,3
// if (i != 3) {
// System.out.println(i);
// System.out.println(++i);
// } // 下面执行结果为2,3
// if (i != 3)
// System.out.println(i);
// System.out.println(++i); // 下面执行无结果
// if (i == 3) {
// System.out.println(i);
// System.out.println(++i);
// } // 下面执行结果为3,从执行结果得知,if无大括号的语句块后的第二行语句开始,就不再受if语句块的影响
if (i == 3)
System.out.println(i);
System.out.println(++i);
}
}
package cn.temptation; public class Sample03 {
public static void main(String[] args) {
// 形式2、if(比较表达式) { ... } else { ... }
int i = 2;
int j = 3; if (i == j) {
System.out.println("i等于j");
} else {
System.out.println("i不等于j");
} // 联想一下,这种形式的if结构(if...else结构)和 三元运算符的效果差不多
}
}
package cn.temptation; import java.util.Scanner; public class Sample04 {
public static void main(String[] args) {
// 需求:使用if...else...结构获取通过键盘录入的三个数字中最大的一个 // 声明三个变量来接收键盘录入的数字
Scanner input = new Scanner(System.in);
// 一行中声明多个变量
int i, j, k;
System.out.println("输入第一个数字:");
i = input.nextInt();
System.out.println("输入第二个数字:");
j = input.nextInt();
System.out.println("输入第三个数字:");
k = input.nextInt();
input.close(); // 使用if...else...结构比较这三个数字
int temp = 0;
int max = 0; // // 写法1、分步操作
// // ① 先把i、j进行比较得出较大的一个赋值给临时变量temp
// if (i > j) {
// temp = i;
// } else {
// temp = j;
// }
//
// // ② 再把temp、k进行比较得出最大的一个赋值给最终变量max
// if (temp > k) {
// max = temp;
// } else {
// max = k;
// } // 写法2、if...else...的嵌套
if (i > j) {
// 满足该条件时,说明i是i、j中较大的
if (i > k) {
max = i;
} else {
max = k;
}
} else {
// 满足该条件时,说明j是i、j中较大的
if (j > k) {
max = j;
} else {
max = k;
}
} System.out.println("输入的数字为:" + i + "," + j + "," + k + "中,最大的一个数字为:" + max);
}
}
package cn.temptation; public class Sample05 {
public static void main(String[] args) {
// 形式3
// if(比较表达式) { ... }
// else if(比较表达式) { ... }
// else if(比较表达式) { ... }
// ...
// else { ... }
// 执行时,依次判断每一个比较表达式是否为true,如果为true,就执行该if语句块中的内容 // 注意:else if之间有一个空格 int i = 2; // if (i == 3) {
// System.out.println("i等于3");
// } else if (i == 5) {
// System.out.println("i等于5");
// } else {
// System.out.println("i等于其他值");
// } // 注意:如果多个比较表达式均为true(多个条件均成立),那么会执行第1个为true的if语句块中的内容
// 后续为true的if语句块不会再走入了
// if (i < 3) {
// System.out.println("i小于3");
// } else if (i < 5) {
// System.out.println("i小于5");
// } else {
// System.out.println("i等于:" + i);
// } if (i < 5) {
System.out.println("i小于5");
} else if (i < 3) {
System.out.println("i小于3");
} else {
System.out.println("i等于:" + i);
}
}
}
package cn.temptation; import java.util.Scanner; public class Sample06 {
public static void main(String[] args) {
// 需求:根据键盘录入的数字,判断输入的数字为奇数还是偶数?(分别使用if结构 和 三元运算符实现)
Scanner input = new Scanner(System.in);
System.out.println("输入一个数字:");
int i = input.nextInt();
input.close(); // 写法1、使用if结构
// if (i % 2 == 0) {
// System.out.println("该数为偶数");
// } else {
// System.out.println("该数为奇数");
// } // 写法2、三元运算符
// 因为三元运算符 和 if...else...结构的相近,考虑直接把if...else结构中的语句放到三元运算符中,这是生搬硬套,语法出错
// (i % 2 == 0) ? (System.out.println("该数为偶数")) : (System.out.println("该数为奇数")); // 变通写法1、本质上和写法1是一样的
// boolean result = (i % 2 == 0) ? true : false;
// if (result) {
// System.out.println("该数为偶数");
// } else {
// System.out.println("该数为奇数");
// } // 变通写法2、纯粹使用三元运算符
// 根据是否为偶数获取相应的字符串
String msg = (i % 2 == 0) ? "该数为偶数" : "该数为奇数";
// 输出字符串的内容
System.out.println(msg);
}
}
package cn.temptation; import java.util.Scanner; public class Sample07 {
public static void main(String[] args) {
// 需求:根据键盘录入的分数数字,判断输入的分数是优秀(90~100)、良好(80~89)、及格(60~79)、不及格(0~59)
Scanner input = new Scanner(System.in);
System.out.println("输入一个分数:");
int score = input.nextInt();
input.close(); // 下句表示范围的写法是错误的,画个数轴看一下
// if (score >= 90 || score <= 100) {
if (score >= 90 && score <= 100) {
System.out.println("优秀");
} else if (score >= 80 && score <= 89) {
System.out.println("良好");
} else if (score >= 60 && score <= 79) {
System.out.println("及格");
} else if (score >= 0 && score <= 59) {
System.out.println("不及格");
} else {
System.out.println("输入的分数应该在【0~100】之间");
} // 注意:仔细看看需求,其实隐含了一个条件:即分数的范围是在0~100之间
}
}
package cn.temptation; import java.util.Scanner; public class Sample08 {
public static void main(String[] args) {
// 需求:根据键盘录入的月份数字,判断是哪一个季节?(3~5月为春季,6~8月为夏季,9~11月为秋季,12~2月为冬季)
Scanner input = new Scanner(System.in);
System.out.println("输入一个月份:");
int month = input.nextInt();
input.close(); // 写法1
if (month >= 3 && month <= 5) {
System.out.println("Spring");
} else if (month >= 6 && month <= 8) {
System.out.println("Summer");
} else if (month >= 9 && month <= 11) {
System.out.println("Autumn");
// 下句写法没有满足条件的数字
// } else if (month >= 12 && month <= 2) {
} else if (month == 12 || month == 1 || month == 2) {
System.out.println("Winter");
} else {
System.out.println("输入的月份应该在【1~12】之间");
} // 写法2
int result = month / 3; if (month == 0 || month == 13 || month == 14 || result < 0 || result > 4) {
System.out.println("输入的月份应该在【1~12】之间");
} else if (result < 1) {
System.out.println("Winter");
} else if (result < 2) {
System.out.println("Spring");
} else if (result < 3) {
System.out.println("Summer");
} else if (result < 4) {
System.out.println("Autumn");
} else {
System.out.println("Winter");
} // 编写代码及测试时,要充分考虑,特别是边界值,考虑时不要遗漏
}
}
package cn.temptation; public class Sample09 {
public static void main(String[] args) {
// 选择结构:switch结构 // switch (变量) {
// case 值1:
// break;
// case 值2:
// break;
// ...
// case 值n:
// break;
// default:
// break;
// } // 注意:
// 1、switch后括号中的内容有一些限制:byte、short、int、long、char
// JDK 5后可以使用枚举;JDK 7后可以使用字符串类型
// 2、case:后面的值拿来和switch括号中的内容进行比较的,当比较结果为true时,会执行该case语句块中的内容
// 3、break:英文是中断的意思,也就是说后续都不做了,作用范围到switch右侧的大括号为止
// 4、default:英文是默认的意思,如果case条件的值都不能匹配switch括号中的值,那么执行default语句块中的内容
// 5、switch结构中可以没有default部分,但是要求加上default部分
// 6、switch结构中可以只有default部分,表示默认就执行该default语句块中的内容 int i = 2; switch (i) {
case 1:
System.out.println("i等于1");
break;
case 2:
System.out.println("i等于2");
break;
case 3:
System.out.println("i等于3");
break;
default:
System.out.println("i等于其他值");
break;
} System.out.println("这里不会收到switch结构中的break语句的影响"); switch (i) {
default:
System.out.println("switch结构中只有default部分");
break;
}
}
}
package cn.temptation; import java.util.Scanner; public class Sample10 {
public static void main(String[] args) {
// 注意:
// 1、case部分的值不能重复,否则有语法错误:Duplicate case
// 2、default部分不是非得放在switch结构中的最后,可以放在任何和case同级的位置,只是习惯性的放在最后
// 3、放在最后的default部分,可以不写break语句,但是建议写上 // 需求:根据键盘录入的数字,使用switch结构判断是星期几
Scanner input = new Scanner(System.in);
System.out.println("输入一个数字作为星期几:");
int weekDay = input.nextInt();
input.close(); switch (weekDay) {
// default部分可以放在switch结构的最前端
// default:
// System.out.println("输入不正确");
// break;
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
// default部分可以放在switch结构的任意位置
// default:
// System.out.println("输入不正确");
// break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("输入不正确");
// 写在最后的default部分中的break语句可以省略不写
// break;
}
}
}
package cn.temptation; public class Sample11 {
public static void main(String[] args) {
// switch结构在JDK 7后支持字符串,case后就可以使用字符串
String course = "Java"; switch (course) {
case "Android":
System.out.println("Android是主流的移动开发平台");
break;
case "Java":
System.out.println("Java真简单");
break;
case "MySQL":
System.out.println("MySQL是主流的数据库");
break;
default:
System.out.println("想混口饭吃,总得会一样!");
break;
}
}
}
package cn.temptation; public class Sample12 {
public static void main(String[] args) {
// 特别注意:
// switch结构中,case部分需要结合break语句使用,如果只写case部分不写其相应的break语句,会发生"case击穿"现象
// 如果case部分没有相应的break语句,当该case条件满足时,执行该case部分的语句内容,并一直向下执行(无视其他case条件),直到遇见break为止
// 如果一直没有遇见break,以switch右侧的大括号(switch结构作用域右侧的边界)作为执行结束的依据 int i = 2; switch (i) {
case 1:
System.out.println("i等于1");
break;
case 2:
System.out.println("i等于2");
case 3:
System.out.println("i等于3");
// break;
default:
System.out.println("i等于其他值");
break;
} System.out.println("这里会不会被执行到?");
}
}
package cn.temptation; public class Sample13 {
public static void main(String[] args) {
int i = 2; // 问题1
// switch (i) {
// default:
// i++;
// break;
// case 2:
// ++i;
// break;
// case 3:
// ++i;
// break;
// case 4:
// ++i;
// break;
// }
//
// System.out.println(i); // 3 // default部分放在switch结构的最前面,也不会第一个执行,也优先匹配case条件 // 问题2
switch (i) {
default:
i++;
case 3:
++i;
case 4:
++i;
} System.out.println(i);
}
}
package cn.temptation; import java.util.Scanner; public class Sample14 {
public static void main(String[] args) {
// 需求:根据键盘录入的数字,判断是什么季节?(分别使用if结构 和 switch结构)
Scanner input = new Scanner(System.in);
System.out.println("输入一个月份:");
int month = input.nextInt();
input.close(); // 写法1、if结构
if (month >= 3 && month <= 5) {
System.out.println("Spring");
} else if (month >= 6 && month <= 8) {
System.out.println("Summer");
} else if (month >= 9 && month <= 11) {
System.out.println("Autumn");
} else if (month == 12 || month == 1 || month == 2) {
System.out.println("Winter");
} else {
System.out.println("输入的月份应该在【1~12】之间");
} // 写法2、switch结构
// switch (month) {
// case 1:
// System.out.println("Winter");
// break;
// case 2:
// System.out.println("Winter");
// break;
// case 3:
// System.out.println("Spring");
// break;
// case 4:
// System.out.println("Spring");
// break;
// case 5:
// System.out.println("Spring");
// break;
// case 6:
// System.out.println("Summer");
// break;
// case 7:
// System.out.println("Summer");
// break;
// case 8:
// System.out.println("Summer");
// break;
// case 9:
// System.out.println("Autumn");
// break;
// case 10:
// System.out.println("Autumn");
// break;
// case 11:
// System.out.println("Autumn");
// break;
// case 12:
// System.out.println("Winter");
// break;
// default:
// System.out.println("输入的月份应该在【1~12】之间");
// break;
// } // 因为switch结构中的很多case条件都做的是相同的事情,所以考虑优化一下写法
// 考虑把做相同事情的case条件合并到一起,使用case击穿,这样可以省略一些重复的代码
switch (month) {
case 12:
case 1:
case 2:
System.out.println("Winter");
break;
// 下句写法语法错误:The operator || is undefined for the argument type(s) int, int
// case 3 || 4 || 5:
case 3:
case 4:
case 5:
System.out.println("Spring");
break;
case 6:
case 7:
case 8:
System.out.println("Summer");
break;
case 9:
case 10:
case 11:
System.out.println("Autumn");
break;
default:
System.out.println("输入的月份应该在【1~12】之间");
break;
}
}
// if结构 和 switch结构的区别:
// 1、if结构的括号内使用的是比较表达式,得到的结果是boolean类型的值
// 2、switch结构的case后面跟的是用来匹配的值 // if结构 和 switch结构的选择:
// 1、if结构用于条件描述的范围比较大的场合
// 2、switch结构用于少量的有特定的值进行比较的场合
}
【原】Java学习笔记005 - 流程控制的更多相关文章
- 【原】Java学习笔记007 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // for循环 // ...
- 【原】Java学习笔记006 - 流程控制
package cn.temptation; public class Sample01 { public static void main(String[] args) { // 需求:写一万次&q ...
- Java学习笔记五——流程控制
分支结构 Java提供了两种常见的分支控制结构:if语句和switch语句. if语句 if语句使用布尔值或布尔表达式(表达式结果为布尔值),if语句有3中形式: 第一种形式: if (5 > ...
- Java学习笔记之---流程控制语句
Java学习笔记之---流程控制语句 (一)循环语句 (1)if语句 if(布尔表达式){ //如果布尔表达式为true将执行的语句 } if(i%2!=0){ System.out.println( ...
- Python学习笔记 - day4 - 流程控制
Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...
- PYTHON 学习笔记2 流程控制工具以及函数定义、匿名函数
前言 在上一节的学习中.已经介绍了几种基本类型.包括字符串的定义,以及字符串中索引.切片.字符串拼接的使用方法.以及基本的整形数据运算.一些之前都没有了解过的运算符.比如 ** 乘方 //整数除法等. ...
- JavaSE学习笔记03流程控制
Java流程控制 1.顺序结构 java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句往下执行. 顺序结构是最简单的算法结构,它是任何一个算法都离不开的一种基本算法结构. 2. 选择结构 ...
- C#学习笔记_04_流程控制
04_流程控制 程序的执行结构: 顺序结构 分支结构 循环结构 可以通过某些特定的控制语句来控制代码的执行结构 分支流程控制 if else 基本语法 可以只有if没有else,但是不能没有if只有e ...
- 0039 Java学习笔记-多线程-线程控制、线程组
join线程 假如A线程要B线程去完成一项任务,在B线程完成返回之前,不进行下一步执行,那么就可以调用B线程的join()方法 join()方法的重载: join():等待不限时间 join(long ...
随机推荐
- so库链接和运行时选择哪个路径下的库?
总结今天遇到的一个so库链接.运行问题. 这几天修改了xapian的源码,重新编译so库,再重新编译之前的demo程序,跑起来后却发现执行的函数并非我修改过的,使用的还是老版本.折腾了一会儿,发现是因 ...
- Cassandra与Mongo的事务实现之分布式协议
摘要 NoSql不同于关系型数据库,是分布式存储,因此想要实现关系型数据库中的事务就不是那么简单了.本文结合Cassandra中的paxos和Mongo的two phase commit来谈谈Nosq ...
- 【视频】使用ASP.NET Core开发GraphQL服务
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时. GraphQL来自Facebook,它于2012年开始开发,2015年开源. GraphQL与编程语言无关,可以使用很 ...
- 在asp.net web api 2 (ioc autofac) 使用 Serilog 记录日志
Serilog是.net里面非常不错的记录日志的库,另外一个我认为比较好的Log库是NLog. 在我个人的asp.net web api 2 基础框架(Github地址)里,我原来使用的是NLog,但 ...
- 【Storm篇】--Storm 容错机制
一.前述 Storm容错机制相比其他的大数据组件做的非常不错. 二.具体原因 结合Storm集群架构图: 我们的程序提交流程如下: 其中各个组件的作用如下: Nimbus资源调度任务分配接收jar ...
- Python内置函数(13)——complex
英文文档: class complex([real[, imag]]) Return a complex number with the value real + imag*1j or convert ...
- AttributeError: module 'pip' has no attribute 'main'
Pycharm在运行pip安装模块是报错如下: 解决方法: 找到安装路径下的packaging_tool.py文件修改如下: 我的路径为D:\Program Files\JetBrains\PyCha ...
- IView组件化之部署及按钮学习
IView是什么? iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. Npm安装IView npm install iview 在main.js中配置I ...
- 使用dotnet build时复制引用dll到生成目录
默认配置下dotnet build只会输出项目代码的dll,依赖用的是dotnet缓存中的dll,只有dotnet publish才会把依赖的dll一起输出到生成目录. 在项目csproj文件中添加以 ...
- Spring系列(七) Spring MVC 异常处理
Servlet传统异常处理 Servlet规范规定了当web应用发生异常时必须能够指明, 并确定了该如何处理, 规定了错误信息应该包含的内容和展示页面的方式.(详细可以参考servlet规范文档) 处 ...