用户点击字母“M”时如何返回主菜单?

问题描述 投票:-1回答:1

用户输入字母“M”后如何返回主菜单。它会将它们引导到主菜单页面?

我尝试使用while(!inChoice.equalsIgnoreCase(“M”));但它不起作用。知道出了什么问题吗?

public static void searchByCountry(){

    int n, i, j, x;

    n = (uniqueCountries.length)-1;

    for(i=0; i<n; i++) {

        for(j=i+1; j<n;) {

            if(uniqueCountries[i]==uniqueCountries[j]) {

                for(x=j; x<n; x++) {

                    uniqueCountries[x] = uniqueCountries[x+1];
                } 

                n--;

            } 

            else {

                j++;
            }
        }
    }

    String msg = "";
    msg = "";

    for(i=0; i<n; i++) {

        String allUniqueCountries = uniqueCountries[i];

        msg += (i+1) + ". " + allUniqueCountries +" "+ "\n";       
    }

String input = JOptionPane.showInputDialog(null,“输入国家/地区编号\ n”+ msg);

    int countryChoice = Integer.parseInt(input);

    String result = "";

    int count = 1;

    if(countryChoice == 1) {



        for(i=0; i<3; i++) {



        JOptionPane.showInputDialog(null, "Search result: " + count + "\n" 
        + "=======================\n" 
        + "Country: " + country[i] + "\n" 
        + "Month: " + travelmonth[i] + "\n" 
        + "Description: " + description[i] + "\n" 
        + "Price: $" + price[i] + "\n" + "=======================\n" 
        + "Enter M to return to main menu");
        count++;         

        }

    }

    //else if
    if (countryChoice == 2) {

        for(i=3; i<5; i++) {

        JOptionPane.showInputDialog(null, "Search result: " + count + "\n" 
        + "=======================\n" 
        + "Country: " + country[i] + "\n" 
        + "Month: " + travelmonth[i] + "\n" 
        + "Description: " + description[i] + "\n" 
        + "Price: $" + price[i] + "\n" 
        + "=======================\n" 
        + "Enter M to return to main menu");
        count++;

        }

    } 

else if(countryChoice == 3){

        for(i=5; i<8; i++) {

        JOptionPane.showInputDialog(null, "Search result: " + count + "\n" 
        + "=======================\n" 
        + "Country: " + country[i] + "\n" 
        + "Month: " + travelmonth[i] + "\n" 
        + "Description: " + description[i] + "\n" 
        + "Price: $" + price[i] + "\n" 
        + "=======================\n" 
        + "Enter M to return to main menu");
        count++;

        }
    }

    while(!inChoice.equalsIgnoreCase("M"));
}

}

java
1个回答
0
投票

您实际上需要接受新输入,然后检查它是否与“M”匹配。您提出问题的方式很难说明您实际上是如何管理输入的。它使用Scanner来获取用户输入。

Scanner sc = new Scanner(System.in);
while (true) {
    String line = sc.nextLine();
    if (line.equalsIgnoreCase("M")) {
        return;
    }
}

此外,在像这样的功能方法中进行轮询是不好的做法。您可以调用一个方法,例如waitForM(),它专门用于在您的主体中调用searchByCountry()方法后执行此操作。像这样的东西可以处理得更好。

    /* Scanner used to read input from console */
    public static Scanner sc = new Scanner(System.in);

    /* Main entry point to program */
    public static void main (String args[]) throws Exception {
        String input = "";
        /* Keep getting input until it is "exit", then finish */
        while (!(input = getInput()).equalsIgnoreCase("exit")) {
            System.out.println("Enter desired input. Type exit to exit");
            if (input.equalsIgnoreCase("search")) {
                SearchByCountry();
            }
            WaitForM();
        }
    }

    public static void SearchByCountry() {
        /* Do Stuff */
    }

    /* Method to wait for M Input */
    public static void WaitForM() {
        System.out.println("Enter M to return to Menu");
        String input = "";
        while (!(input = getInput()).equalsIgnoreCase("M")) {
            return;
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.