Java扫描程序未正确存储字符串

Java扫描程序未正确存储字符串,java,Java,我试图在控制台中创建一个菜单,让用户选择一个选项,由于某种原因,当我运行应用程序时,它会直接转到else,绕过选项a-d import java.util.Scanner; public class UserChoice { public static void main(String[] args) { boolean status = true; while (status == true) { System.out.println("");

我试图在控制台中创建一个菜单,让用户选择一个选项,由于某种原因,当我运行应用程序时,它会直接转到else,绕过选项a-d

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.");

    }
    }

}

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

对其他else/if块也应用相同的更改


=
比较参考等式
equals()
方法检查内容是否相等。

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

   String choiceString ="";
   while(choiceString.length() <1){
         choiceString = keyboard.nextLine();
   }
现在,由于您选择的是char,您可以使用单引号编写条件,如下所示:

   if (choice == 'a' || choice == 'A'){
    .......
    ......
      char choice = choiceString.toUpperCase().charAt(0);
      if (choice == 'A'){ 
       .....
      }else if(...
此外,如果需要,您希望将输入的字符串大小写更改为大写或小写,获取字符,然后使用以下更简单的条件:

   if (choice == 'a' || choice == 'A'){
    .......
    ......
      char choice = choiceString.toUpperCase().charAt(0);
      if (choice == 'A'){ 
       .....
      }else if(...

天哪,你是救命恩人!我不敢相信这是一个如此简单的错误:P我已经挠头一个小时了哈哈