控制条件语句
我们虽然学习完了选择结构和循环结构,但是呢,现实生活中大部分情况下,一件事完完整整的循环结束的可能性比较小,因为中途可能会发生一些状况,可能会导致循环次数变少,或者循环提前结束,或者更严重的情况发生。
为了模拟这样的情况,java呢,就提供了几个关键字给我们使用,每个关键字在不同的场景下使用。它们统称为控制流程语句
break;
continue;
return;
1.break语句
(1) break的使用场景:
- 在选择结构switch语句中
- 在循环语句中
- 离开使用场景的存在是没有意义的
(2) 注意事项:
- 单独一个if语句中不可以使用
- 单独使用break没有意义,也不准使用
(3)举一个输入数字几就会输出星期几,并且当输入错误时,可以直接进行重新输入的例子。
import java.util.Scanner;
public class ControlDemo1 {
public static void main(String[] args) {
//不可以单独使用
// break;
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
boolean flag = true;
while (flag){***/*while循环是保证当输入数字错误时,
switch语句会结束但是while循环会继续,因此可以保证我们可以再从
新输入数据。然后在进行重新判断。*/***
System.out.println("请输入一个数字(1-7):");
int number = sc.nextInt();
switch (number){
case 1:
System.out.println("星期一");
flag = false;/*此flag=false是保证当数据
输入正确时,switch语句结束,while循环也结束,从而就避免了再输出
default中的"输入的数据有误,请重新输入!" */
break;
case 2:
System.out.println("星期二");
flag = false;
break;
case 3:
System.out.println("星期三");
flag = false;
break; //结束switch选择语句。
case 4:
System.out.println("星期四");
flag = false;
break;
case 5:
System.out.println("星期五");
flag = false;
break;
case 6:
System.out.println("星期六");
flag = false;
break;
case 7:
System.out.println("星期日");
flag = false;
break;
default:
System.out.println("输入的数据有误,请重新输入!");
break;
}
}
(4)如果想在循环嵌套中使用break结束最外层循环怎么办呢?
java中提供了一个带标签的break
例子中的wc和nc就是分别为外部循环和内部循环的标签
举例:
public class b {
public static void main(String[] args) {
wc:for (int i = 1; i <= 9; i++) {
nc:for (int j = 1; j <= i; j++) {
if(j==4){
//break wc;
break nc; //单独使用的时候,结束的是离它最近的那个循环,就是跳出单层循环
}
System.out.print(i + "*" + j + "=" + (i * j) + "\t");
}
System.out.println();
}
}
}
当break nc结束内部的循环时的结果为:
当break wc结束内部的循环时的结果为:
从两者的结果我们可以看出结束外部循环和内部循环的区别。
2.continue语句
(1)continue语句用法:跳出当次循环,继续执行后面的循环。
(2) continue的使用场景:在循环语句中
(3)举例:
public class Continue {
public static void main(String[] args) {
//在打印1-10过程中,打印3之前我们continue一下
for(int i=1;i<=10;i++){
if(i==3){
continue; //跳出当次循环,继续执行后面的循环。
}
System.out.println(i);
}
}
}
结果:结果就跳过了3其他数正常输出
3.return语句
(1)return语句用法:结束main方法,结束程序执行,正常情况下,return在方法中使用,我们马上会说到
(2)举例:
public class ReturnDemo {
public static void main(String[] args) {
for(int i=1;i<=10;i++){
if(i==3){
return; //结束main方法,结束程序执行,正常情况下,
在方法中使用,我们马上会说到
}
System.out.println(i);
}
}
}
结果:此程序到三直接结束,main方法直接结束。
4.列题
小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。
分析:
1、由于存钱都是每天会发生的内容,所以我们用循环去解决
又由于我们学过了for循环和while循环
因为不知道要存多少天钱,所以我们采用while循环
2、定义一个变量接收存钱的天数
代码:
public class ControlTest {
public static void main(String[] args) {
//定义变量代表存储的天数
int day = 0;
//定义另一个变量表示存储的金额
double money = 0;
while (money <= 100) {
day = day + 1;
money = money + 2.5;
//每当这一天是存钱的第5天或者5的倍数的话, 她都会花去6元钱
if (day % 5 == 0) {
money = money - 6;
}
}
System.out.println("==================================");
System.out.println("第" + day + "天的时候,存到了" + money + "元");
}
}
结果: