Java-使用开关盒获取用户输入并传输到主功能

Java-使用开关盒获取用户输入并传输到主功能,java,loops,while-loop,switch-statement,Java,Loops,While Loop,Switch Statement,我有一个静态函数,它获取并返回一个字符输入。 然后,它将使用while循环检查输入。 在我的main方法获得输入后,结果将根据用户输入相应地显示 以下是我的方法: public class test { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char choice = getInput(sc); String r

我有一个静态函数,它获取并返回一个字符输入。 然后,它将使用while循环检查输入。 在我的main方法获得输入后,结果将根据用户输入相应地显示

以下是我的方法:

public class test
{

    public static void main(String[] args) 
    {
        Scanner sc = new Scanner(System.in);
        char choice = getInput(sc);
        String result;
        switch (choice) 
        {
            case ('a'): result = "u choose A";
            break;
        }
    }

    private static char getInput(Scanner keyboard) 
    {
        Scanner sc = new Scanner(System.in);
        System.out.println("a, b, c, d, e, q: ");
        char choice = sc.nextLine().trim().toLowerCase().charAt(0); 

        while (choice != 'a' || choice != 'b' || choice != 'c' || choice != 'd' || choice != 'e' || choice != 'q')
        {
            System.out.println("You have entered an invalid entry.");
            System.out.println("a, b, c, d, e, q: ");
            choice = sc.nextLine().trim().toLowerCase().charAt(0);
        }
        return choice;
    }
}
但是,即使我输入了字符“a”,也会得到无效输入的结果

我可以知道我出了什么问题吗?

这种情况:

while (choice != 'a' || choice != 'b' || choice != 'c' || choice != 'd' || choice != 'e' || choice != 'q')

如果您的选择不是a、不是b或不是c等,则将始终返回true。将这些| |运算符更改为&&运算符,您应该可以继续使用。

作为改进,您可以使用“键盘”而不是在getInput方法中创建新的扫描对象。谢谢Ben。我实施了你的方法,效果很好。但是,我无法将该值返回到main,在输入有效输入后将程序压缩到结束。我可以知道如何更改我的程序吗?谢谢:看起来你从来没有在主控台上打印过任何东西。例如,您可能需要添加System.out.printlnresult;在你的转换声明之后。是的,我错过了,我想我可以把打印件放在箱子里。非常感谢您,如果您愿意,您实际上可以在箱子标签后打印;您发布的代码不会在任何地方调用输出方法。但在这种情况下,没有双关语的意思,最清楚的做法可能是在switch语句之后使用一个print方法调用。