Как завершить выключатель, который находится внутри выключателя. Джава - PullRequest
0 голосов
/ 21 октября 2011

Я пытаюсь сделать переключатель внутри переключателя.Я получил его для компиляции, но единственное, что каждый раз, когда я запускаю его, я выбираю один из вариантов для первого коммутатора, и как только я иду и выбираю один из вариантов для первого коммутатора внутри коммутатора, он затемтакже просит меня выбрать чехол для второго переключателя внутри первого переключателя, затем третьего и четвертого, затем он заканчивается.Как мне сделать так, чтобы вся программа запускалась снова назад в начале после выбора первого переключателя внутри переключателя, или завершить программу.Спасибо.

ex.

System.out.println("Pick a color.\n");

System.out.println("          1. Red");
System.out.println("          2. Blue");
System.out.println("          3. Yellow");
System.out.println("          4. Green");

Scanner kbReader = new Scanner(System.in);
int color = kbReader.nextInt();

System.out.println("The color you chose was " + color + ".");
String s1 = kbReader.nextLine();

switch (color)
    {
case 1: //Red
System.out.println("Now enter an integer from 1 through 10.");
int num1 = kbReader.nextInt();

switch (num1)
        {
case 1:
case 3:
case 5:
case 7:
case 9:
    System.out.println("");

case 2:
case 4:
case 6:
case 8:
case 10:
    System.out.println("");
    break;
        }
case 2: //Blue
System.out.println("Now enter an integer from 1 through 10.");
int num2 = kbReader.nextInt();

switch (num2)
        {
case 1:
case 3:
case 5:
case 7:
case 9:
    System.out.println("");

case 2:
case 4:
case 6:
case 8:
case 10:
    System.out.println("");

        }
case 3: //Yellow
System.out.println("Now enter an integer from 1 through 10.");
int num3 = kbReader.nextInt();

switch (num3)
        {
case 1:
case 3:
case 5:
case 7:
case 9:
    System.out.println("");

case 2:
case 4:
case 6:
case 8:
case 10:
    System.out.println("");

        }
case 4: //Green
System.out.println("Now enter an integer from 1 through 10.");
int num4 = kbReader.nextInt();

switch (num4)
        {
case 1:
case 3:
case 5:
case 7:
case 9:
    System.out.println("");

case 2:
case 4:
case 6:
case 8:
case 10:
    System.out.println("");     
        }
    }
}

Ответы [ 3 ]

4 голосов
/ 21 октября 2011

Просто поставьте break после операторов switch, которые находятся внутри операторов switch.

т.е. (например)

switch (color) 
    { 
case 1: //Red 
System.out.println("Now enter an integer from 1 through 10."); 
int num1 = kbReader.nextInt(); 

switch (num1) 
        { 
case 1: 
case 3: 
case 5: 
case 7: 
case 9: 
    System.out.println(""); 

case 2: 
case 4: 
case 6: 
case 8: 
case 10: 
    System.out.println(""); 
    break; 
        } 

break;  <--- this is the addition
case 2: //Blue 

В качестве альтернативы (и сделает все это более читабельным), установите эти переключатели в другую функцию

0 голосов
/ 21 октября 2011

Вы можете заключить любой из переключателей в условный цикл (while / do-while) и, когда он достигнет конца, если ваше условие не достигнуто (скажем, вы хотите, чтобы переменная done была true ), переключатель повторится.

Кроме того, вы можете использовать break; после того, как функции печати в переключателях прекратят продолжение выбора параметров переключателя.

Чтобы повторить всю программу, оберните ее через некоторое времяили цикл do-while.

0 голосов
/ 21 октября 2011

Где вы используете оператор break, вы должны сделать перерыв;заявление после завершения вашего дела.как это.case 1: break;

если вы не дадите оператор break, он будет выполняться последовательно. После первого переключения он перейдет к следующему переключателю и т. д.

...