我正在尝试在控制台中创建一个菜单并让用户选择一个选项,出于某种原因,当我运行应用程序时,它会直接转到其他位置,绕过选项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.");
}
}
}
答案 0 :(得分:4)
所有字符串/对象比较应使用equals()
方法而不是==
(字符串文字除外)
if (choice.equals("a") || choice .equals( "A")){....}
将相同的更改应用于其他/ if块。
==
比较引用相等性。 equals()
方法检查内容是否相等。
答案 1 :(得分:0)
您可能需要确保输入至少一个字符:
String choiceString ="";
while(choiceString.length() <1){
choiceString = keyboard.nextLine();
}
完成后,您可能希望从字符串中获取第一个字符:
char choice = choiceString.charAt(0);
现在既然您选择了char,您可以使用单引号编写条件,如下所示:
if (choice == 'a' || choice == 'A'){
.......
......
此外,如果您需要,您想要将输入的字符串的大小写更改为大写或小写,请获取char,然后使用更简单的条件,如下所示:
char choice = choiceString.toUpperCase().charAt(0);
if (choice == 'A'){
.....
}else if(...