java中break跟continue使用问题

以下程序执行不是我想要的。我想要的结果是按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循环。