Java扫描程序未正确存储字符串
我试图在控制台中创建一个菜单,让用户选择一个选项,由于某种原因,当我运行应用程序时,它会直接转到else,绕过选项a-dJava扫描程序未正确存储字符串,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("");
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我已经挠头一个小时了哈哈