以下程序执行不是我想要的。我想要的结果是按1继续输出case1的内容;按0则重新选择执行case1或者case2.请帮我分析下break跟continue的用法。
import java.util.Scanner;
public class Test {
public static void main(String[] args){
int i;
Scanner input=new Scanner(System.in);
do{
System.out.println("请输入1,输入0结束");
i=input.nextInt();
switch(i){
case 1:
System.out.println("执行到case1了,输入1继续到case1");
int y=input.nextInt();
if(y==1){
continue;}
else if(y==0){
break;
}
case 2:
System.out.println("执行到case2了");
}
}while(i!=0);
}
}
你这里的break和continue用处是一样的,break指的是跳出当前循环,continue指的是跳出正在执行的本次循环,而刚好switch也是循环且只是执行一次的循环,所以你用break和continue在这里都是结束switch循环,所以没有意义。
break是结束整个循环体,continue是结束单次循环。在运行到continue时候,这一次的do里面的内容就不再运行了,进行下一个循环(这里是while),如果你程序有个计数器的话,就是从count=1变成count=2了,而break,是终止循环,在你这里,终止的是switch
根据你提供的代码,想要实现你所说的需求,需要更改两个点 第一点 把break改成continue,因为continue是跳过本次循环,进入下次循环,而break是结束本次循环并且跳出循环。第二点把while(i !=0);改成while(i !=2) 这样你按0的时候就会重新执行且不会退出程序,否则按0 while满足条件便会退出循环,希望我的回答能对你有所帮助!
import java.util.Scanner;
public class Test {
public static void main(String[] args){
int i;
Scanner input=new Scanner(System.in);
do{
System.out.println("请输入1,输入0结束");
i=input.nextInt();
switch(i){
case 1:
System.out.println("执行到case1了,输入1继续到case1");
int y=input.nextInt();
if(y==1){
continue;}
else if(y==0){
continue;
}
case 2:
System.out.println("执行到case2了");
}
}while(i!=2);
}
}
不是很理解意思。
1.continue是结束当前循环,什么叫循环?
2.break是单纯就是跳出循环吗?
先说第一个,以你的例子说,里面循环就是do..while,switch是分支,什么意思呢,就是你continue之后再do{}这个块中(即这个大括号中的内容),continue以下不在被执行
第二点,break再循环中使用时跳出循环,但是和switch一起用它有另一个用法叫跳出switch,即break之后switch块中的内容不再被执行,但是switch块后的内容仍旧会被执行。
do{
System.out.println("请输入1,输入0结束");
i=input.nextInt();
while(1 == 1) {
switch (i) {
case 1:
System.out.println("执行到case1了,输入1继续到case1");
int y = input.nextInt();
if (y == 1) {
continue;// 终止本次循环(while(1=1)处)
} else if (y == 0) {
break; //1.跳出switch块,下个语句是2.break;
}
//除1和0外往下执行case2,并执行break跳出循环,重新进行1和0的选择
case 2:
System.out.println("执行到case2了");
}
break;// 2.跳出循环(跳到do..while 重新进行1和0的选择)
}
}while(i!=0);
break是结束整个循环体,continue是结束单次循环
不复杂啊:break是整个do……while循环结束,结束条件就是System.out.println("请输入1,输入0结束");输入y为0是整个操作结束。
如果输入非0 ,就继续循环操作当然是continue。你的代码功能已经很明确了,输入0结束,输入1继续循环。
break是结束整个do while循环,continue是结束单次循环。
假如for要循环10次, 在任何一次循环中遇到break那么for循环终止,
如果在任何一次循环中遇到continue,直接跳出本次接下来该走的程序直接走下一个for循环。