2016-04-28 2 views
1

Может ли кто-нибудь отредактировать мой код, чтобы он зацикливал меню выбора. Если выбор не является одним из 5 вариантов, он попросит пользователя повторно ввести его, пока он не станет допустимым. Если возможно, объяснение также будет полезно. СпасибоКак проверить меню выбора с помощью петли

Вот мой код.

import java.util.*; 
public class ShapeLoopValidation 
{ 
    public static void main (String [] args) 
    { 
     chooseShape(); 
    } 

    public static void chooseShape() 
    { 
     while (true){ 
      Scanner sc = new Scanner(System.in); 
      System.out.println("Select a shape number to calculate area of that shape!"); 
      System.out.print("Circle = 1. \nRectangle = 2. \nTriangle = 3. \nExit = 4. \nINPUT : "); 
      int shapeChoice = sc.nextInt(); 
      //while (true) { 
      if (shapeChoice >= 1 && shapeChoice <=4) 
      { 
       if (shapeChoice == 1) 
       { 
        circle(); 
       } 
       else if (shapeChoice == 2) 
       { 
        rectangle(); 
       } 
       else if (shapeChoice == 3) 
       { 
        triangle(); 
       } 
       else if (shapeChoice == 4) 
       { 
        return; 
       } 
      } 
      else 
      { 
       System.out.print("Error : Choice " + shapeChoice + "Does not exist."); 
      } 
     } 

     class Test { 
      int a, b; 

      Test(int a, int b) { 
       this.a = a; 
       this.b = b; 
      } 
     } 
    } 
+0

правильный отступ кода – mmuzahid

+0

«Может кто-то отредактировать мой код, чтобы он зацикливал меню выбора. Если выбор не является одним из 5 вариантов, он будет предлагать пользователю повторно вводить, пока он не станет допустимым. »<- Ваш код уже делает это. В чем проблема? –

ответ

0

Во-первых: посмотрим на switch

Второе: прочитать немного о do-while loops (они, как правило, хорошо подходят для такого рода ситуаций).

Теперь, как я бы реализовать его (но вы действительно должны узнать, как сделать петлю в этом сценарии):

public static void chooseShape() { 

    boolean valid = false; 
    do { 
     Scanner sc = new Scanner(System.in); 
     System.out.println("Select a shape number to calculate area of that shape!"); 
     System.out.print("Circle = 1. \nRectangle = 2. \nTriangle = 3. \nExit = 4. \nINPUT : "); 
     int shapeChoice = sc.nextInt(); 

     switch (shapeChoice) { 
      valid = true; 
      case 1: 
       circle(); 
       break; 
      case 2: 
       rectangle(); 
       break; 
      case 3: 
       triangle(); 
       break; 
      case 4: 
       return; 
      default: 
       valid = false; 
       System.out.println("Error : Choice " + shapeChoice + "Does not exist."); 
       System.out.println("Please select one that exists.") 
     } 
    } while (!valid) 
} 
0

Использование do-while управления потоком до тех пор, пока введен код выхода:

int shapeChoice; 
do { 
    System.out.println("Select a shape number to calculate area of that shape!"); 
    System.out.print("Circle = 1. \nRectangle = 2. \nTriangle = 3. \nExit = 4. \nINPUT : "); 
    int shapeChoice = sc.nextInt(); 
    // then use if-else or switch 
} while (shapeChoice != 4); 

OR

break заявление на перерыв в цепи для вашего нижеследующего кода:

else if (shapeChoice == 4) 
{ 
    break; 
}