3. 流程控制
3.流程控制
1. 顺序结构
程序从上到下逐行执行
每个语句只被执行一次
中间没有条件和跳转
2. 分支结构
分支又称条件语句,实现流程的控制
Java分支语句:
- If语句
- Switch语句
2.1 If语句
2.1.1 If
if(布尔表达式)
{
//如果布尔表达式为true将执行的语句
}
如果if语句中的大括号只有一语句,那么可以省略大括号,不建议这样做,容易出错
练习1:
定义一变量 sex 表示人的性别。
如果sex 为 1,输出小明是男的;
如果sex 为 0,输出小明是女的;
答案:
//生成一个scanner对象
Scanner scanner = new Scanner(System.in);
//定义性别变量,男的为0,女的为1,设定初始值为0
byte sex = 0;
//键盘输入一个数字,赋值给变量sex
sex = scanner.nextByte();
//判断性别是否为男,是则打印输出
if (sex == 0) {
System.out.println("小明是男的。");
}
//判断性别是否为女,是则打印输出
if (sex == 1) {
System.out.println("小明是女的。");
}
易错:
int i = 10;
if (i = 10)
{
System.out.println(“我是10”);
}
2.1.2 If-else
if(布尔表达式){
//如果布尔表达式的值为true
}else{
//如果布尔表达式的值为false
}
练习2:
定义一变量 sex 表示人的性别。
如果sex 为 1,输出:小明是男的;
如果sex 为 0,输出:小明是女的;
如果sex 不为0,也不为1,输出:小明是可能去过泰国的;
答案:
//先判断性别是否为男/女,否则输出“小明是可能去过泰国的”
if (sex == 0 || sex == 1) {
//根据sex为0或者1,打印输出
if (sex == 0) {
System.out.println("小明是男的。");
}else {
System.out.println("小明是女的。");
}
} else {
System.out.println("小明是可能去过泰国的。");
}
2.1.3 If-elseif-else
if(布尔表达式 1){
//如果布尔表达式 1的值为true执行代码
}else if(布尔表达式 2){
//如果布尔表达式 2的值为true执行代码
}else if(布尔表达式 3){
//如果布尔表达式 3的值为true执行代码
}else {
//如果以上布尔表达式都不为true执行代码
}
练习3:
定义一浮点数 f ,存放华阳中学3年2班学生小明的期末考试数学成绩(100分制:0到100),
如果成绩大于等于 90 ,输出:华阳中学3年2班小明同学,期末考试数学成绩为:优,
如果成绩大于等于 80 ,输出:华阳中学3年2班小明同学,期末考试数学成绩为:良,
如果成绩大于等于 70 ,输出:华阳中学3年2班小明同学,期末考试数学成绩为:中,
如果成绩大于等于 60 ,输出:华阳中学3年2班小明同学,期末考试数学成绩为:差,
如果成绩小于 60 ,输出:华阳中学3年2班小明同学,期末考试数学成绩为:不及格。
答案:
System.out.println("请输入小明的成绩:");
float result = scanner.nextFloat();
if (result > 100 || result < 0) {
System.out.println("小明的成绩输入非法!");
} else {
if (result >= 90 && result <= 100) {
System.out.println("华阳中学3年2班小明同学,期末考试数学成绩为:优");
} else if (result >= 80 && result < 90) {
System.out.println("华阳中学3年2班小明同学,期末考试数学成绩为:良");
} else if (result >= 70 && result < 80) {
System.out.println("华阳中学3年2班小明同学,期末考试数学成绩为:中");
} else if (result >= 60 && result < 70) {
System.out.println("华阳中学3年2班小明同学,期末考试数学成绩为:差");
} else {
System.out.println("华阳中学3年2班小明同学,期末考试数学成绩为:不及格");
}
}
2.1.4 嵌套的If-else
if(布尔表达式 1){
////如果布尔表达式 1的值为true执行代码
if(布尔表达式 2){
////如果布尔表达式 2的值为true执行代码
}
}
练习4:
根据输入的年龄和性别显示阶段的姓名:如果是男性:0-3:男婴;4-18:正太;19-28:欧巴;29-50:蜀黍;51及以后“爷爷”。如果是女性:0-3:女婴;4-18:萝莉;19-28:妹纸;29-50:熟女;51及以后“奶奶”
如果用户没有填写姓名,则提示“请输入姓名”,否则如果姓名长大于10则提示“姓名长度不能大于10”,
“男”.equals(“男”);
“长度”.length();
2.2 Switch语句
switch(表达式) {
case 表达式:
语句;
break;
case 表达式:
语句;
break;
default:
语句;
}
表达式只能是整数类型或者enum枚举类型、String类型(JDK1.7),包含byte,short,int和char,不能是long
练习5:
近期跑男的节目组找到你,让你替他们做一个选择。你有八张卡片,分别为A-邓超,B-Angelababy,C-李晨,D-陈赫,E-郑恺,F-王祖蓝,G-鹿晗,如果你选择邓超,请输出“We are 伐木累!”,如果是Angelababy,请输出“boom shakalaka!”,如果是李晨,请输出“我们打一架吧!”,如果是陈赫,请输出“你是猪吗?”,如果是郑恺,请输出“噗”,如果是王祖蓝,请输出“完美!”,如果是鹿晗,请输出“傻狍子!”,如果你选择的不是上面的,请输出“你是猴子请来的救兵吗?”
答案:
//提示要输入的信息
System.out.println("请输入你要选择的明星:");
//用String对象来存键盘输入的内容
String name = scanner.next();
//根据name的值来判断需要打印的内容
switch (name) {
case "A":
System.out.println("We are 伐木累!");
break;
case "B":
System.out.println("boom shakalaka!");
break;
case "C":
System.out.println("我们打一架吧!");
break;
case "D":
System.out.println("你是猪吗?");
break;
case "E":
System.out.println("噗");
break;
case "F":
System.out.println("完美!");
break;
case "G":
System.out.println("傻狍子!");
break;
default:
System.out.println("你是猴子请来的救兵吗?");
break;
}
3. 循环结构
满足循环条件下,反复执行某一段代码,这段被重复执行的代码叫循环体。
包含4个部分:
- 初始化语句
- 循环条件
- 循环体
- 迭代语句(循环控制语句)
Java中主要的三种循环结构:
- while循环
- do-while循环
- for循环
3.1 while循环
初始化语句
while(循环条件){
循环体
迭代语句
}
只要循环条件为true,循环体会一直执行下去。一般用于不知道循环的次数时。
练习6:
输出1-100整数
3.2 do-while循环
初始化语句
do{
循环体
迭代语句
} while(循环条件);
do-while循环和while循环相似,不同的是,do-while循环至少会执行一次。 do-while循环的循环条件后面必须有一个分号,这个分号表明循环结束
练习7:
用do-while实现练习6
3.3 for循环
for(初始化语句;循环条件;迭代语句){
循环体
}
练习8:
打印100以内不能被7整除的数,并求其和
3.4 循环嵌套
把一个循环放在另一个循环内
for(int i = 0;i < 5; i++){
for(int j = 0; j < 3; j++){
System.out.println(“i的值是:”+i+“,j的值是:”+j); }
}
嵌套循环的执行顺序是从外到内
使用循环嵌套时,内层和外层循环的控制变量不能相同
循环嵌套结构的书写,要体现循环层次的关系
避免太多和太深的循环嵌套结构
练习9:
打印9x9乘法表
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
…
3.5 循环控制
3.5.1 break
某些时候需要在某种条件出现时强行终止循环,而不是等到循环条件为false时才退出循环
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块
break 跳出最里层的循环,并且继续执行该循环下面的语句。
练习10:
数组存放有 1 到 10,10个整数,输出 1 到 10 (含10)中的偶数。要求必须使用到 break 关键字。
3.5.2 continue
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
练习11:
使用continue,代替break,实现练习10
4. 练习和实践
1、写一个将十进制数转换成二进制的程序。
2、写一个用于计算两个整数的最大公约数和最小公倍数的程序。
3、任意一个数,计算每一位的和。
4、输出直角三角形、倒等腰三角形。
5、打印出所有的“水仙花数”,所谓“水仙花”是指一个三位数,其各位数字立方和等于该数的本身
例如:153是一个“水仙花数”