一、流程控制
流程控制的概念
控制流程(也称为流程控制)是计算机运算领域的用语,意指在程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。不论是在声明式编程语言或是函数编程语言中,都有类似的概念。
在声明式的编程语言中,流程控制指令是指会改变程序运行顺序的指令,可能是运行不同位置的指令,或是在二段(或多段)程序中选择一个运行。
流程控制的分类
Java流程控制包括顺序控制、条件控制和循环控制。
顺序控制,就是从头到尾依次执行每条语句操作。
条件控制,基于条件选择执行语句.
比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操作A,反之则执行操作B。
循环控制,又称为回路控制,根据循环初始条件和终结要求,执行循环体内的操作。
实际上,不管是各种控制,归根结底,就是做事情的步骤性的表现方式,有的是顺序的,有的是条件的,还有的是控制的。从广义上来思考,都是具有顺序性的完成工作。
- Java的条件控制主要形式如下:
1)if(condition){statement}
2)if(condtion){statement1} else {statement2}
3)switch(condition)
{
case condition1:statement1;
break;
.....default:statement}
4)上述形式的组合与嵌套
- Java的循环控制主要形式如下:
1)while(condtion){statement}
2)do {statement} while(condtion);
3)for(initialCondition;circleCondition;iterator{statement}
4)上述形式的组合与嵌套
二、说明
.IF语句
> 语法结构: IF(判断条件){操作语句}
解释说明:如果判断条件是真的,就执行操作语句。
IF..else语句
语法结构:
IF(判断条件){操作语句} else {操作语句2}
解释说明:如果判断条件是真的,就执行操作语句,否则就执行操作语句2.
SWITCH..CASE语句
语句结构如下:
{ case 常量表达式1:语句1;
....
case 常量表达式2:语句2;
default:语句;
}
1.default就是如果没有符合的case就执行它,default并不是必须的.
2.case后的语句可以不用大括号.
3.switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型.
4.一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break,利用这一特性可以让好几个case执行统一语句.
For循环
for 循环的句法是:
for (初值表达式; boolean 测试表达式; 改变量表达式/步长){
语句或块
}执行顺序如下:
1、首先运行初值表达式。
2、然后计算测试表达式,如果表达式为true,
执行语句或块;如果表达式为false,退出for循环。
3、最后执行步长.
示例:
for (int i = 0; i < 10; i++) {
System.out.println("Java");
}
do循环
do 循环的句法是:
do {
语句或块;
}while (测试值表达式);
说明:
先执行语句或块,然后再判断布尔表达式。与while语句不同,当布尔表达式一次都不为true时,while语句一开始判断就跳出循环,一次都不执行语句或块,而在do语句中则要执行一次。
While语句
while 循环的句法是:
> while (布尔表达式) { 语句或块 }
说明:当布尔表达式为true时,执行语句或块,否则跳出while循环。
实例:
int i = 0;
while (i < 10) {
System.out.println("while语句");
i++;
}
- foreach语句
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for
每一个”的意思。实际上也就是这个意思。
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
实例:
//定义并初始化一个数组
int arr[] = {2, 3, 1};
System.out.println("----1----排序前的一维数组");
for (int x : arr) {
System.out.println(x); //逐个输出数组元素的值
}
//对数组排序
Arrays.sort(arr);
//利用java新特性for each循环输出数组
System.out.println("----1----排序后的一维数组");
for (int x : arr) {
System.out.println(x); //逐个输出数组元素的值
}
}
用于数组
for (type var : arr) {
body-of-loop
}
// 等价于
for (int i = 0; i < arr.length(); i++) {
body-of-loop
}
用于集合:
for (type var : coll) {
body-of-loop
}
// 等价于
for (Iterator<TYPE> iter = coll.iterator(); iter.hasNext();) {
type arr = iter.next();
body-of-loop
}
四、 特殊循环流程控制
下列语句可被用在更深层次的控制循环语句中:
break [标注];
break 语句被用来从 switch 语句、循环语句和预先给定了 label 的块中退出,跳出离break 最近的循环。
continue[标注];
continue 语句被用来略过并跳到循环体的结尾,终止本次循环,继续下一次循环。
五、习题
第一题:
有 36 人 36 块板砖,男人每人般 4 块,女人每人搬 3 块,小孩每 2 人搬 1 块。36 人都搬了一次,把砖刚好搬晚,问:几男几女的几个小孩?
第二题: 打印 1-100 的素数 (只能被 1 和他本身整除的数)
素数 : 只能被 1 和他本身整除的数.
第三题: 写个猜数字的小游戏:
生成一个 1-100 的随即数,让用户输入数字猜,如果猜错了 提示猜大了 还是猜小了,然后用户继续输入信数字猜,猜对了退出!
第四题:
出租车计费标准为:3 公里以内 10 元,3 公里以后每 1 公里加 2 元,每等待 5 分钟加 2 元。超过 15 公里,每公里加 3 元,打印出钱数。
第五题:
一电信公司的市内通话费计算标准如下:3 分钟 02 元,3 分钟后每增加一分钟加 0.1元,不足一分钟的按照一分钟计算。要求编写程序。给定一个通话时间(秒)。计算相应的费用。
第六题:
给定 3 个数,a b c ,输出最大数。
第七题:
用 scanner 输入一个数字,然后判断下数字大小,如果大于 0 输出为正数等于 0 输出为 0 否则输出为负数。
第八题:
用 scanner 输入一个分数,来判断分数等级:
>=90 打印 优秀
80-90 打印 良好
70-80 打印 中等
60-70 打印 及格
<60 打印 不及格
第九题:
循环打印 100 以内的数。
第十题:
循环打印 100 以内的所有奇数
第十一题:
用 scanner 输入一个数字,计算从 1 到这个数字的累加并打印出来。
第十二题:
打印
*
* *
* * *
* * * *
* * * * *
第十三题:
打印
*
***
*****
*******
*********
第十四题:
打印乘法表
第十五题:
打印乘法表:遇到 12 的倍数不显示,遇到 28 的倍数,本行终止。
第十六题:
打印 0-50 之间不是 5 的倍数和 7 的倍数
第十七题:
学习打印 1-100 的数字,遇到 7 的倍数或包含 7 的数字,不打印