流程控制语句
1.1流程控制语句
是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。其流程控制方式有:顺序结构、分支结构和循环结构。
1.1.1 If单分支选择结构
if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句
public class Test02{ public static void main(String[] args){ //if语句举例: //晚上加不加班 boolean a = true; /*if语法: if(boolean值的表达式){ 当boolean值返回true的时候,执行该代码 } */
if (a){ System.out.println("继续敲代码"); } System.out.println("回家吃鸡腿");
} } |
返回的结果为
当a的值为false时,返回的结果为
1.1.2 if-else双分支选择结构
当条件表达式为真时,执行语句块1,否则,执行语句块2。也就是else部分
语法举例:
public class Test02{ public static void main(String[] args){ //if语句举例: //晚上加不加班 boolean a = true; /*if语法: if(boolean值的表达式){ 当boolean值返回true的时候,执行该代码 } */
if (a){ System.out.println("继续敲代码"); }else{ System.out.println("回家吃鸡腿"); } System.out.println("努力奋斗");
} } |
返回结果
如a的值为false,结果为
拓展练习
小孩搬桌子: 年龄大于7岁可以搬桌子了,大于5岁且为男孩,也可以搬桌子了;否则不可以搬动桌子。
import java.util.Scanner; public class Test02{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("请输入性别:1.男孩 2.女孩"); int gender = input.nextInt(); System.out.println("请输入年龄"); int age = input.nextInt(); if (gender == 1){
if(age > 5){ System.out.println("男孩5岁就可以搬桌子了"); }else{ System.out.println("男孩小于5岁不能搬桌子"); } }else
if(age > 7){ System.out.println("女孩7岁就可以搬桌子"); }else{ System.out.println("女孩小于7岁不能搬桌子"); } } } |
测试结果
1.1.3 If-else if-else多分支选择结构
If-else if-else多分支结构适合处理区间段的问题,区间段从小到大用”<”,从大到小用”>”.例如:
2 public class Test03{ 3 public static void main(String[] args){ 4 int age = (int) (100*Math.random()); 5 System.out.print("年龄是"+age+",属于"); 6 if (age<15){ 7 System.out.println("青春年少"); 8 }else if(age<25){ 9 System.out.println("风华正茂"); 10 }else if(age<45){ 11 System.out.println("蒸蒸日上"); 12 }else if(age<65){ 13 System.out.println("儿孙满堂"); 14 }else if(age<85){ 15 System.out.println("寿比南山"); 16 }else{ 17 18 } 19 } 20 } |
返回的值为:
1.14 switch多分支选择结构
import java.util.Scanner; public class Test04{ public static void main(String[] args){ System.out.println("欢迎光临陕西面馆,本店推出如下面食:1.羊肉泡馍 2.炒麻食 3.油泼面 4.酸菜扯面"); Scanner input = new Scanner(System.in); System.out.println("请点餐"); int a = input.nextInt(); switch (a){ case 1: System.out.println("羊肉泡馍"); break; case 2: System.out.println("炒麻食"); break; case 3: System.out.println("油泼面"); break; case 4: System.out.println("酸菜扯面"); break;
default: System.out.println("您点的餐已经卖完了"); break;
} } } |
返回结果如下:
Switch语句的特性:
1.switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处
语句处或者是switch语句的末尾。与任一case值不匹配,则进入default语句;
2.只能处理等值条件判断的情况,且表达式必须为byte,short,int或char类型 ,String 不能是double,float. Long;
3.常量值必须是与表达式类型兼容的特定的一个常量;
4.不允许有重复的case值 ;
5.default子句为可选(可写可不写)
拓展练习:
随机生成一个字母 ,并且判断字母的分类 (a e i o u为元音字母,y w为半元音字母,其他的是辅音字母。
public class Test05{ public static void main(String[] args){
int n = (int)(Math.random()*26)+97; char c = (char)n; System.out.println(c); switch (c){ case 'a': case 'e': case 'i': case 'o': case 'u': System.out.println("元音字母"); break; case 'y': case 'w': System.out.println("半元音字母"); break;
default: System.out.println("辅音字母"); break;
} } } |
返回结果如下:
1.1.5 while循环
While循环注意点:在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环
While循环的四个元素:
- 初始化
- 条件判断
- 循环体
- 迭代(就是让条件判断趋向于false的操作
当初始化条件不成立的时候,while循环一次都不执行
举例:请计算小于6的正整数之和
public class Test06{ public static void main(String[] args){ //赋值,初始化 int sum = 0; int count = 0; //条件判断 while (count < 6){ //循环体 sum += count; //迭代 count ++; } System.out.println(sum); } } |
返回结果如下:
1.1.6 do-while循环
Do-while循环是先执行,后判断,当初始化的条件不成立的时候,也总是保证循环体会被至少执行一次。
While循环是先判断,后执行。
举例:请计算小于6的正整数之和(用do-while循环)
public class Test07{ public static void main(String[] args){
//赋值,初始化 int count = 0; int sum = 0; do{ //循环体 sum += count; //迭代 count ++; }while (count < 6); System.out.println(sum);
} } |
返回结果值为:
次数不固定的循环用while循环,次数固定用for循环。
1.1.7 for循环
练习:计算1-10所有数字之和
public class Test08{
public static void main(String[] args){ int sum = 0; for(int i=1;i <=10;i++){ sum += i;
}
System.out.println(sum);
} } |
返回结果为:
拓展练习:
·用while和for循环分别计算100以内奇数和偶数的和,并输出
先用while循环:
public class Test01{ public static void main(String[] args){
int a = 1; int o = 0;//保存偶数的和 int j = 0;//保存奇数的和 while (a <= 100){ if (a % 2 == 0){ o += a; }else { j += a; } a ++; } System.out.println("偶数的和是:"+ o); System.out.println("奇数的和是:"+ j); } } |
再用for循环:
public class Test01{ public static void main(String[] args){
int o = 0;//保存偶数的和 int j = 0;//保存奇数的和 for (int a=1;a<=100;a++){ if (a % 2 ==0){ o += a; }else { j += a; } }
System.out.println("偶数的和是:"+ o); System.out.println("奇数的和是:"+ j); } } |
返回的结果一致,都是:
·循环录入某学生5门课的成绩并且计算平均分,如果分数录入为负数,重新录入
import java.util.Scanner; public class Test03{ public static void main(String[] args){ //循环录入某学生5门课的成绩并且计算平均分,如果分数录入为负数,重新录入 Scanner input = new Scanner(System.in); int sum = 0; for (int a = 0;a < 5;a++){ //a代表的是循环次数,第一次默认用0,共5次,所以a<5;a++代表的是迭代,循环完1次后开始下一次循环 System.out.println("请输入第"+a+"门课的成绩"); int score = input.nextInt(); if (score >= 0){ sum += score; }else { a --; //如果成绩有误,就需要在原来循环迭代的基础上-1次,就是不计算此次循环,避免此次循环录入空白值 System.out.print("分数录入为负数,请重新录入"); }
} System.out.println("该学员的平均成绩是"+sum/5); } } |
返回的结果如下: