在我的项目中,我有一个循环,它是选择菜单的模拟,当用户选择一个数字时,我想要进入下一个循环,但这是循环内 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/