java - 如何从循环内的 switch 语句继续到下一个循环?

标签 java loops while-loop switch-statement

在我的项目中,我有一个循环,它是选择菜单的模拟,当用户选择一个数字时,我想要进入下一个循环,但这是循环内 switch 语句的一部分。 我的代码是:

while(entrychoice!=8){     

    String alphabet= "abcdefghijklmnopqrstuvwxyz";  //tyxaio onoma    

       String   onoma = "";

      Random random = new Random();
      int randomLen = 1+random.nextInt(9);
    for(int p = 0; p < randomLen; p++) {
      char c = alphabet.charAt(random.nextInt(26));
       onoma+=c;
            }

            //Random rand=new Random();//this.kratisid=kratisid; kai stin main bazo random
            //int kratisid=rand.nextInt(500)+100;//Παραγει τυχαιο κωδικο κρατησης μεταξυ 100 και 500




 int kratisid = getRandomInt();  //dimiourgia monadikou kai tyxaiou                                    kratisid

    Random rand1=new Random();
    int afixi=rand1.nextInt(30)+1;//tyxaia mera afixis se ena mina

    Random rand2=new Random();
    int mdiam=rand2.nextInt(30)+1;//tyxaies meres diamonis se ena domatio

    Random rand3=new Random();
    int atoma=rand3.nextInt(4)+1;

    Domatio d=null;//reference to the domatio pou egine kratisi


    reservation r=new reservation(onoma,kratisid,afixi,mdiam,atoma,d);
    //r.antistoixisidtodom(d,dom);

   Hotel1.addkratisianyroom(r);//prosthiki  tyxaias kratisis r se tyxaio domatio

   //25% pithanotita gia tyxaia akyrosi kratisis
   Random randprob=new Random();
   int prob=randprob.nextInt(4)+1;//prob is the probability of cancelling a random kratisi
   if (prob==1)//25%
   {  //epilogi tyxaias kratisis apo tin lista kratiseon Rlist gia akyrosi
        Random randomGeneratorList=new Random();
        int index=randomGeneratorList.nextInt(Rlist.size())+0;//+0;

       int kratisiFRCID=Hotel1.Rlist.get(index).kratisid;//kratisiFRCid means kratisiForRandomCancel ID
        Hotel1.cancelkratisi(kratisiFRCID);//Rlist.get(index).cancel....
    }



         Scanner scanchoice = new Scanner(System.in);
         System.out.println();
         System.out.println("Enter \"1\", \"2\",\"3\",\"4\",\"5\",\"6\",\"7\"or\"8\"");
          if(scanchoice.hasNextInt()){
        entrychoice = scanchoice.nextInt();
    }
  switch(entrychoice)
  {
     case 1:
     continue;
     break;**
    }

}

请注意,代码继续,但很大,其他选项并不重要。正如您在 switch 语句的 case1 中看到的,我希望用户输入 1 进入下一个循环,但编译器说中断;永远不会被执行,这会破坏我的 switch 语句。请建议如何使用 switch 语句和用户输入进入下一个循环,就像我在这里所做的那样。提前谢谢。

最佳答案

编译器是正确的,break 永远不会到达。您所需要做的就是删除它:

switch(entrychoice) {
    case 1:
        continue;
    case 2:
        ...
        break;
}

使用 break 的原因是通过将执行发送到 switch 的末尾来结束 case。由于 continue 还会通过将执行发送到程序的不同点来结束 switch,因此 break 变得无法访问,因此 Java 编译器坚持删除它。

对于其他中断执行的结构也是如此:在 switch 内的 return throw 后不需要 break .

关于java - 如何从循环内的 switch 语句继续到下一个循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705537/

相关文章:

java - jdbc connectTimeout 与 jdbc loginTimeout

Java 数学 - 测试 NaN

loops - Julia for 循环中的迭代索引

javascript - 为什么负 while 循环如此之快?

java - 带异常处理的 while 循环

java - 在 Java 中以较小的磁盘大小写入 PNG 文件

java - 如何在 node.js 中为 IBM DB2 iSeries 选择的 sql 的 where 子句中使用固定长度的 CCSID 37 字符值

java - 如何使用 if 语句来知道玩家或计算机是否获胜?

python - Python:虽然不是异常

python - 在列表中查找特定值的每三个实例