2014-05-16 2 views
0

종료하려면 5를 입력 할 때까지 입력 (반복)을 반복하고 싶습니다. 예를 들어 i 디스플레이 케이스 1을 입력 한 다음 입력을 다시 요청하고 4를 입력하고 케이스 4를 표시합니다. 종료 할 때까지 5를 입력합니다.사용자가 종료 할 때까지 메뉴를 만드는 방법

아래 코드는 계속 입력을 요구하며 출력을 표시하지 않습니다.

public static void main(String[] args){ 
     System.out.println("1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 
     //ask input from user 
     System.out.println("Enter your choice: "); 
     Scanner scan=new Scanner(System.in); 
     int input=scan.nextInt(); 
     int check=input; 
     //keep looping until user input 5 which is Exit 
     while (input!=5){ 
      System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 
      int input1=scan.nextInt(); 
      check=input1; 
     } 
     switch (check){ 
      case 1 : 
       System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup"); 
       break; 
      case 2 : 
       System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon"); 
       break; 
      case 3 : 
       System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango"); 
       break; 
      case 4 : 
       System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended"); 
       break; 
      case 5 : 
       System.exit(0); 
       break; 
     } 
    } 
} 

답변

1

switchwhile 안에 있어야한다. 첫 x 째 입력이 처리 된 후에 만 ​​다른 입력을 요청해야합니다.

while (input is valid) 
    get input 
    process input 
1

귀하의 switch 문은 while-loop 범위 밖이다.

 while (input!=5) 
     { 
      System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 
      int input1=scan.nextInt(); 
      check=input1; 
      switch (check) 
      { 
      case 1 : 
       System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup"); 
       break; 
      case 2 : 
       System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon"); 
       break; 
      case 3 : 
       System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango"); 
       break; 
      case 4 : 
       System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended"); 
       break; 
      case 5 : 
       System.exit(0); 
       break; 
      }   
     } 

편집 : 다른 사람이 최근 답변에서 지적한대로 또한, 루프 조건 변수는 루프 내부 리셋되지 않는 (하지만 당신이 물어 틀림없이, 인 질문, 다른 문제에 부수적이다).

+0

흥미 롭. 그 편집 대답이 어떤 사전 편집 코멘트를 날려 버리기 전에 결코 눈치 채지 못했습니다. 매혹적인. –

+0

나는 그렇게 생각하지 않는다. 어쩌면 모드가 정리를했을 수도 있습니다. –

+0

얼마나 이상한가요? 나는 논쟁의 여지가있는 것을 전혀 눈치 채지 못했다. –

0

나는이 같은 문제를 해결할 것입니다 :

do{ 
    System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 
    int input1=scan.nextInt(); 
    check=input1; 
    switch (check){ 
    case 1 : 
     System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup"); 
     break; 
    case 2 : 
     System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon"); 
     break; 
    case 3 : 
     System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango"); 
     break; 
    case 4 : 
     System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended"); 
     break; 
    case 5 : 
     System.exit(0); 
     break; 
    } 
} 
while (input!=5); 

을 당신이 적어도 한 번 보여 보장 할 - 동안 루프를 추가.

은 또는 당신은 단순히

while (input!=5){ 
    System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 
    int input1=scan.nextInt(); 
    check=input1; 
    switch (check){ 
    case 1 : 
     System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup"); 
     break; 
    case 2 : 
     System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon"); 
     break; 
    case 3 : 
     System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango"); 
     break; 
    case 4 : 
     System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended"); 
     break; 
    case 5 : 
     System.exit(0); 
     break; 
    } 
} 
0

두 가지 수정을해야 할 수 있습니다. 먼저 while 루프 내에서 switch 블록을 이동하십시오. 둘째, input 만 할당하기 때문에 while 루프가 종료되지 않습니다. 난 단지 혼란의 일부를 상상할 수

코드에서 너무 많은 변수를 가지고에서 온다 : input는, input1는, check이 ...

그것은 당신의 코드를 크게 간소화 할 수 날 것으로 보인다. 다음과 같은 대안을 고려 - 5를 입력 할 때 VM을 종료 할 계획 때문에 우리는 간단한 while(true) 루프를 사용할 수 있습니다

public static void main(String[] args) { 
    Scanner scan = new Scanner(System.in); 

    while (true) { 

     System.out.println("Please enter 1-5\n1.Soup\n2.Main Course\n3.Dessert\n4.Beverage\n5.Exit"); 

     int input = scan.nextInt(); 

     switch (input) { 
     case 1: 
      System.out.println("1.Mushroom Soup\n2.Miso Soup\n3.Tomato Soup"); 
      break; 
     case 2: 
      System.out.println("1.Chiken Katsu Don\n2.Curry Katsu Don\n3.Teriyaki Katsu Don\n4.Curry Udon"); 
      break; 
     case 3: 
      System.out.println("1.Matcha Ice Cream\n2.Chocolate Ice Cream\n3.Oreo Chocolate\n4.Dango"); 
      break; 
     case 4: 
      System.out.println("1.Green Tea\n2.Matcha RedBean\n3.Chocolate MilkShake\n4.Strawberry Ice Blended"); 
      break; 
     case 5: 
      System.exit(0); 
      break; 
     } 
    } 
} 
관련 문제