Java笔记13—控制语句(分支、循环、转向)

目录

控制语句:

一、选择语句:if语句 

二、选择语句:switch语句

三、循环语句:for循环

四、循环语句:while循环

五、循环语句:do while循环

六、转向语句:break

七、转向语句:continue


控制语句:

  • 选择语句(分支语句):if语句、switch语句
  • 循环语句:for循环、while循环、do..while..循环
  • 转向语句:break、continue、return

一、选择语句:if语句 

对于if语句来说,在任何情况下只能有1个分支执行,不可能存在2个或者更多个分支执行。if语句中只要有1个分支执行了,整个if语句就结束了。

第一种:

if(布尔表达式){
	java语句;
	java语句;
}

第二种: 

if(布尔表达式){  // 分支1
	java语句;     
}else{            // 分支2
	java语句;
}

第三种: 

if(布尔表达式1){ // 分支1
	java语句;
}else if(布尔表达式2){ // 分支2
	java语句;
}else if(布尔表达式3){
	java语句;
}else if(布尔表达式4){
	java语句;
}

第四种: 

if(布尔表达式1){ // 分支1
	java语句;
}else if(布尔表达式2){ // 分支2
	java语句;
}else if(布尔表达式3){
	java语句;
}else if(布尔表达式4){
	java语句;
}else{
	java语句; // 以上条件没有一个成立的。这个else就执行了。
}

案例1:判断性别

public class IfTest01{
	public static void main(String[] args){
		boolean sex = false;// 定义一个布尔类型的变量,表示性别
		if(sex){
		System.out.println("男");
		}else{
		System.out.println("女");
		}

		// 可以使用三目运算符
		sex = true;
		System.out.println(sex ? "男" : "女");
	}
}

案例2:判断年龄

1、从键盘上接收一个人的年龄。
2、年龄要求为[0-150],其它值表示非法,需要提示非法信息。
3、根据人的年龄来动态的判断这个人属于生命的哪个阶段?
[0-5] 婴幼儿
[6-10] 少儿
[11-18] 少年
[19-35] 青年
[36-55] 中年
[56-150] 老年

public class ifTest{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入年龄:");
		int age = s.nextInt();
	
		String str = "老年"; // 字符串变量默认值是“老年”
		if(age < 0 || age > 150){
			System.out.println("对不起,年龄值不合法");
			return;
		} else if(age <= 5){
			str = "婴幼儿";
		} else if(age <= 10){
			str = "少儿";
		} else if(age <= 18){
			str = "少年";
		} else if(age <= 35){
			str = "青年";
		} else if(age <= 55){
			str = "中年";
		} 
		System.out.println(str);
	}
}

案例3:根据成绩判断等级

1、系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。

2、等级:
优:[90~100]
良:[80~90) 
中:[70-80)
及格:[60~70)
不及格:[0-60)

3、要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

public class ifGradeTest{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入您的考试成绩:");
		double score = s.nextDouble();
		System.out.println("您的考试成绩是:"+score);
		String grade = "不及格";
		if(score<0 || score>100){
			System.out.print("输入错误");
			return;
		}else if(score>90){
			grade = "成绩等级为优";
		}else if(score>80){
			grade = "成绩等级为良";
		}else if(score>70){
			grade = "成绩等级为中";
		}else if(score>60){
			grade = "成绩等级为及格";
		}
		System.out.print(grade);
	}
}

案例4:if嵌套

1、从键盘上接收天气的信息:
1表示:雨天
0表示:晴天
2、同时从键盘上接收性别的信息:
1表示:男
0表示:女
3、要求:
①当天气是雨天的时候:
男的:打一把大黑伞
女的:打一把小花伞
②当天气是晴天的时候:
男的:直接走起,出去玩耍
女的:擦点防晒霜,出去玩耍


public class ifExampleTest{
	public static void main(String[] args){
		java.util.Scanner s = new java.util.Scanner(System.in);// 接收用户键盘输入
		System.out.print("请输入您的性别,输入1表示男,输入0表示女:");
		int gender = s.nextInt();
		System.out.print("请输入当前的天气,1表示雨天,0表示晴天:");
		int weather = s.nextInt();
		if(weather == 1){
				System.out.print("雨天,");
			if(gender == 1){
				System.out.println("男:打一把大黑伞");
			}else if(gender == 0){
				System.out.println("女:打一把小花伞");
			}
		}else if(weather == 0){
			System.out.print("晴天,");
			if(gender == 1){
				System.out.println("男:直接走起,出去玩耍");
			}else if(gender == 0){
				System.out.println("女:擦点防晒霜,出去玩耍");
			}
		}
	}	
}

二、选择语句:switch语句

switch语句也是选择语句,也可以叫做分支语句。

语法格式:break;语句不是必须的,default分支也不是必须的。

switch(值){
case 值1:
	java语句;
	java语句;...
	break;
case 值2:
	java语句;
	java语句;...
	break;
case 值3:
	java语句;
	java语句;...
	break;
default:
	java语句;
}

switch语句支持的值:

  • 只支持int、String两种类型
  • 但是byte,short,char也可以使用在switch语句当中,因为byte short char可以进行自动类型转换
  • long类型不可以
long x = 100L;
switch(x){// 错误: 不兼容的类型: 从long转换到int可能会有损失

}

long x = 100L;
switch((int)x){//可以

}
byte b = 100;
switch(b){//可以,小转大byte自动转换成int

}
short s = 100;
switch(s){//可以,小转大short自动转换成int

}
char c = 'a';
switch(c){//switch支持字符串String类型

}
//switch也支持字符串String类型。
switch("abc"){

}

例子1:接收键盘输入,根据输入的数字来判断星期几。0 星期日,1 星期一……

public class SwitchTest01{
	public static void main(String[] args){	
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入[0-6]的整数:");
		int num = s.nextInt();
	
		switch(num){
		case 0:
			System.out.println("星期日");
			break;
		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("星期六");
	}
}

例子2:根据成绩判断等级

1、系统接收一个学生的考试成绩,根据考试成绩输出成绩的等级。

2、等级:
优:[90~100]
良:[80~90) 
中:[70-80)
及格:[60~70)
不及格:[0-60)

3、要求成绩是一个合法的数字,成绩必须在[0-100]之间,成绩可能带有小数。

public class SwitchTest02{
	public static void main(String[] args){
		// 提示用户输入学生成绩
		java.util.Scanner s = new java.util.Scanner(System.in);
		System.out.print("请输入学生成绩:");
		double score = s.nextDouble();
		System.out.println(score);
		if(score < 0 || score > 100){
			System.out.println("您输入的学生成绩不合法,再见!");
			return; // 这个代码的执行,会让main结束。
		}
		
		int grade = (int)(score / 10); // 95.5/10结果9.55,强转为int结果是9
		String str = "不及格";
		switch(grade){
		case 10: case 9:
			str = "优";
			break;
		case 8: 
			str = "良";
			break;
		case 7:
			str = "中";
			break;
		case 6:
			str = "及格";
		}
		System.out.println("该学生的成绩等级为:" + str);
	}
}

三、循环语句:for循环

为什么要使用循环:循环语句的出现就是为了解决代码的复用性。同的代码重复出现的时候,可以使用循环语句。

语法:

for(初始化表达式; 条件表达式; 更新表达式){
	循环体; // 循环体由java语句构成
	java语句;
	java语句;
	java语句;
	java语句;
	....
}

 初始化表达式、条件表达式、更新表达式 其实都不是必须的。

for(;;){
	System.out.println("死循环");
}
public class ForTest02{
	public static void main(String[] args){
		for(int i = 0;i < 10;i++){
			System.out.println("i = " + i); // 0 1 2 3....9
		}
		//System.out.println(i);//错误: 找不到符号

		// i变量的作用域就扩大了。
		int i = 0;
		for(;i < 10;i++){
			System.out.println("i =" + i); // 0 1 2 3....9
		}
		System.out.println("循环结束后i = " + i); // 10

		for(int k = 1; k <= 10; k++){
			System.out.println("k = " + k); // 1 2 ..... 9 10
		}

		for(int k = 1; k <= 10; ){
			System.out.println("k =" + k);  // 1 2 ..... 9 10
			k++;
		}

		for(int k = 1; k <= 10; ){
			k++;
			System.out.println("k =" + k); // 2 3 4 5 6 7 8 9 10 11
		}
	}
}

案例1:使用for循环,实现1~100所有奇数求和

public class ForTest04{
	public static void main(String[] args){
		sum = 0;
		for(int i = 1; i < 100; i += 2){
			sum += i;
		}
		System.out.println("1~100所有奇数求和结果是:" + sum);// 2500	
	}
}

案例2:for循环的嵌套

public class ForTest{
	public static void main(String[] args){
		for(int k = 0; k < 2; k++){
			System.out.println("k =" + k);
			for(int i = 0; i < 10; i++){ 
				System.out.println("外层循环k的值是" + k + ",内层循环i的值是" + i); 
			}
		}
	}
}

案例3:九九乘法表

1*1=1
1*2=2 2*2=4
......
1*9=9 2*9=18.............................9*9=81

特点:共9行,第i行的时候有i列。

public class ForTest06{
	public static void main(String[] args){
		for(int i = 1; i <= 9; i++){ // 9行,循环9次。
			for(int j = 1; j <= i; j++){ // i是行号
				System.out.print(j + "*" + i + "=" + i * j + " ");
			}
			System.out.println();	// 换行
		}
	}
}

四、循环语句:while循环

语法:

while(布尔表达式){
	循环体;
}

判断布尔表达式的结果,如果为true就执行循环体,直到布尔表达式结果为false,结束。

while循环的循环次数是:0~n次。

// 死循环
while(true){
	System.out.println("死循环");
}
public class WhileTest01{
	public static void main(String[] args){
		// for和while完全可以互换,只不过就是语法格式不一样。
		for(int i = 0; i < 10; ){
			i++;
			System.out.println("i --->" + i); // 1 2 3 .. 9 10
		}

		int i = 0;
		while(i < 10){
			i++;
			System.out.println("i = " + i); // 1 2 3 .. 9 10
		}
	}
}

、循环语句:do while循环

语法:

do {
	循环体;
}while(布尔表达式);

注:do..while循环最后的时候别漏掉“分号”。

对于do..while循环来说,循环体至少执行1次。循环体的执行次数是:1~n次。

// 至少执行1次循环体。
do{
	System.out.println("Hello World!");
}while(false);
public class DoWhileTest01{
	public static void main(String[] args){
		do{
			System.out.println(i++); // 0 1 2 3 ... 8 9
		}while(i < 10);
	}
}

六、转向语句:break

break语句是一个单词成为一个完整的java语句,continue也是这样。

break语句用在两个地方:

  • 第一个位置:switch语句当中,用来终止switch语句的执行。
  • 第二个位置:break;语句用在循环语句当中,用来终止循环的执行(for、while、do while)。

break语句的执行并不会让整个方法结束,

break语句主要是用来终止离它最近的那个循环

for(int i = 0; i < 10; i++){
	if(i == 5){
		break; // break;终止的不是if,不是针对if的,而是针对离它最近的循环。
	}
	System.out.println("i = " + i); // 0 1 2 3 4
}
for(int k = 0; k < 2; k++){ // 外层for
	for(int i = 0; i < 10; i++){ // 内层for
		if(i == 5){
			break; // 这个break;语句只能终止离它最近的for
		}
		System.out.println("i = " + i); //0 1 2 3 4 0 1 2 3 4
	}
}
// 这种语法很少用,了解一下即可。
a:for(int k = 0; k < 2; k++){ 
	b:for(int i = 0; i < 10; i++){
		if(i == 5){
			break a; // 终止指定的循环。
		}
		System.out.println("i = " + i); //0 1 2 3 4
	}
}

七、转向语句:continue

continue语句的作用是:终止当前"本次"循环,直接进入下一次循环继续执行。 

break和continue的区别:

  • break终止离它最近的一整个循环。
  • continue跳过循环中的某一次的执行,继续这个循环。
public class ContinueTest01{
	public static void main(String[] args){
		for(int i = 0; i < 10; i++){
			if(i == 5){
				break;
			}
			System.out.println("i = " + i);//0 1 2 3 4
		}

		System.out.println("----------------------------");

		for(int i = 0; i < 10; i++){
			if(i == 5){
				continue;
			}
			System.out.println("i = " + i); // 0 1 2 3 4 6 7 8 9
		}
	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值