3

我正在尝试在控制台中创建一个菜单并让用户选择一个选项,由于某种原因,当我运行应用程序时,它会直接转到其他选项,绕过选项广告。

import java.util.Scanner;

public class UserChoice {


 public static void main(String[] args) 
{
    boolean status = true;
    while (status == true)
    {
    System.out.println("");
    System.out.println("MENU");
    System.out.println("");
    System.out.println("A : String Functions");
    System.out.println("B : Simple Arithmetic Functions");
    System.out.println("C : Temperature Conversion");
    System.out.println("D : Sequences");
    System.out.println("E : Exit Application");
    System.out.println("");
    System.out.println("Please make a selection.");
            Scanner keyboard = new Scanner(System.in);
    String choice =null;
    choice = keyboard.nextLine();





    if (choice == "a" || choice == "A")
    {
        StringFunctions();
    }

    else if (choice == "b" || choice == "B")
    {
        ArithmeticFunctions();
    }

    else if (choice == "c" || choice == "C")
    {
        TemperatureConversion();
    }

    else if (choice == "d" || choice == "D")
    {
        Sequences();
    }

    else if (choice == "e" || choice == "E")
    {
        System.exit(0);
    }
    else 
    {
        System.out.println("You have entered an invalid selection, please choose again.");

    }
    }

}
4

2 回答 2

4

所有字符串/对象比较都应该使用equals()方法而不是==(字符串文字除外)

if (choice.equals("a") || choice .equals( "A")){....}

也将相同的更改应用于其他 else/if 块。

==比较引用相等性。equals()方法检查内容是否相等。

于 2012-10-26T04:03:54.977 回答
0

您可能需要确保至少输入了一个字符:

   String choiceString ="";
   while(choiceString.length() <1){
         choiceString = keyboard.nextLine();
   }

完成后,您可能希望从字符串中获取第一个字符:

   char choice = choiceString.charAt(0);

现在,由于您的选择是 char,您可以使用单引号编写您的条件,如下所示:

   if (choice == 'a' || choice == 'A'){
    .......
    ......

此外,如果您愿意,您想将输入的字符串的大小写更改为大写或小写,获取字符,然后使用更简单的条件,如下所示:

      char choice = choiceString.toUpperCase().charAt(0);
      if (choice == 'A'){ 
       .....
      }else if(...
于 2012-10-26T04:11:09.557 回答