天文学助手Java菜单驱动的循环程序



我试图制作一个程序,让用户选择一个行星,它会显示该行星的特征。

我想加入将其循环回菜单的功能,只要他们确实选择了"5"来结束程序,并且还将选择验证为 1-5。

但是我有一些错误,我不知道如何摆脱。

import java.util.Scanner;
public class AstronomyHelper
{
   public static void main(String[] args)
   {
   //Declare a variable to hold the user's menu selection
   int menuSelection;
   //Declare a variable to hold the different planets
   string Mercury, Venus, Earth, Mars;

   //Create a scanner object for the keyboard input
   Scanner keyboard = new Scanner(System.in);

      do 
      {
         //Display the menu and get the user's selection
         displayMenu(menuSelection);

         //Display the information for the user's selection
         switch(menuSelection)
         {
            case 1: 
                  System.out.println("tttttttttt MERCURY");
                  System.out.println("_________________________________________________________");
                  System.out.println("Average Distance from the sun:  57.9 million kilomenters");
                  System.out.println("Mass:  3.31 x 10^23 kg");
                  System.out.println("Surface Temperature:  -173 to 430 degrees Celsius");
                  break;

           case 2: 
                  System.out.println("tttttttttt VENUS");
                  System.out.println("_________________________________________________________");
                  System.out.println("Average Distance from the sun:  108.2 million kilometers");
                  System.out.println("Mass:  4.87 x 10^24 kg");
                  System.out.println("Surface Temperature:  472 degrees Celsius");
                  break;
           case 3: 
                  System.out.println("tttttttttt EARTH");
                  System.out.println("_________________________________________________________");
                  System.out.println("Average Distance from the sun:  149.6 million kilometers");
                  System.out.println("Mass:  5.967 x 10^24 kg");
                  System.out.println("Surface Temperature:  -50 to 50 degrees Celsius");
                  break;
           case 4: 
                  System.out.println("tttttttttt MARS");
                  System.out.println("_________________________________________________________");
                  System.out.println("Average Distance from the sun:  227.9 million kiometers");
                  System.out.println("Mass:  0.6424 x 10^24 kg");
                  System.out.println("Surface Temperature:  -140 to 20 degrees Celsius");
                  break;
         }
       while(menuSelection !=5)
       }       

         //Call the displayMenu method to display the menu options and get the user's selection
         public displayMenu()
         {
         System.out.println("Please select a planet to view details about it's: ");
         System.out.println("average distance from the sun, mass, and surface temperature.");
         System.out.println("-------------------------------------------------------------");
         System.out.println("1. Mercury");
         System.out.println("2. Venus");
         System.out.println("3. Earth");
         System.out.println("4. Mars");
         System.out.println("5. EXIT the program");
         System.out.println("Enter your selection:  ");
         menuSelection = keyboard.nextInt();

            //Validate the menu selection
            while (menuSelection < 1 || menuSelection > 5)
            {
               System.out.print("This is an invalid selection.");
               System.out.print("Enter a selection from 1-5: ");
               menuSelection = keyboard.nextInt();
            }
          }
}
  public displayMenu() // there must be a return type and int parameter

如果你在displayMenu()方法中访问Scanner对象,你必须在main()之外声明它们。

而且您也没有正确关闭do-while循环。

声明的键盘和菜单选择。正确关闭了你的 do-while 并将返回语句添加到你的 displayMenu() 方法中。创建了一个 printPlanet(..) 方法,这样你就不需要复制/粘贴所有相同的数据。工作示例:

import java.util.Scanner;
public class AstronomyHelper {
public static void main(String[] args) {
    int menuSelection = 0;
    do {
        // Display the menu and get the user's selection
        menuSelection = displayMenu();
        // Display the information for the user's selection
        switch (menuSelection) {
        case 1:
            printPlanet("MERCURY", "57.9", "3.31 x 10^23", "-173 to 430");
            break;
        case 2:
            printPlanet("VENUS", "108.2", "4.87 x 10^24", "472");
            break;
        case 3:
            printPlanet("EARTH", "149.6", "5.967 x 10^24", "-50 to 50");
            break;
        case 4:
            printPlanet("MARS", "227.9", "0.6424 x 10^24", "-140 to 20");
            break;
        }
    }
    while (menuSelection != 5);
} // Call the displayMenu method to display the menu options and get the
// user's selection
public static int displayMenu() {
    System.out.println("Please select a planet to view details about it's: ");
    System.out.println("average distance from the sun, mass, and surface temperature.");
    System.out.println("_________________________________________________________");
    System.out.println("1. Mercury");
    System.out.println("2. Venus");
    System.out.println("3. Earth");
    System.out.println("4. Mars");
    System.out.println("5. EXIT the program");
    System.out.println("Enter your selection:  ");
    Scanner keyboard = new Scanner(System.in);
    int menuSelection = keyboard.nextInt();
    // Validate the menu selection
    while (menuSelection < 1 || menuSelection > 5) {
        System.out.print("This is an invalid selection.");
        System.out.print("Enter a selection from 1-5: ");
        menuSelection = keyboard.nextInt();
    }
    return menuSelection;
}
public static void printPlanet(String planet, String distanceToSun, String mass, String degrees) {
    System.out.println("ttt " + planet);
    System.out.println("_________________________________________________________");
    System.out.println("Average Distance from the sun: " + distanceToSun + " million kiometers");
    System.out.println("Mass: " + mass + " kg");
    System.out.println("Surface Temperature: " + degrees + " degrees Celsius");
    System.out.println("_________________________________________________________");
}
}

最新更新