java - 无法让它接受 "letter"输入

标签 java

请原谅我是编程新手,但我非常享受目前所学的知识。所以我的问题是;我正在尝试编写一个程序,提示用户输入一个字母,然后返回该字母是元音字母还是辅音字母。问题是我无法让它接受字母输入。如果像“user_input = 'a'”那样被迫接受它,它将接受它。但不是一个选择。我知道缺少一些简单的东西。

public static void main(String[] args)
{
    Scanner in = new Scanner(System.in);
    int user_input;

    System.out.print("Enter a letter: ");
    user_input = in.nextInt();//<--line of error

    if (user_input == 'a')
    {
        System.out.println("Vowel");
    }
    else if (user_input =='e')
    {
        System.out.println("Vowel");
    }
    else if (user_input =='i')
    {
        System.out.println("Vowel");
    }
    else if (user_input =='o')
    {
        System.out.println("Vowel");
    }
    else if (user_input =='u')
    {
        System.out.println("Vowel");
    }
    else
    {
        System.out.println("Consonant");
    }
}

提前感谢您的宝贵时间。

最佳答案

既然你正在阅读一个字符,你应该使用字符类型。此外,您可能想要读取下一个字符,而不是下一个整数。 .next() 将读取下一个字符串,然后 charAt(0) 仅获取第一个字符。

System.out.print("Enter a letter: ");
char user_input = in.next().charAt(0);

如果你想不区分大小写:

char user_input = in.next().toLowerCase().charAt(0); 

您还可以通过使用逻辑“或”而不是单独的 if

来减少代码的重复
if (user_input == 'a'
 || user_input =='e'
 || user_input =='i'
 || user_input =='o'
 || user_input =='u')
{
    System.out.println("Vowel");
}
else
{
    System.out.println("Consonant");
}

但是,您可能更喜欢switch 语法方法

switch (user_input) {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
        System.out.println("Vowel");
        break;
    default:
        System.out.println("Consonant");
        break;
}

关于java - 无法让它接受 "letter"输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484803/

相关文章:

用于队列处理的java API或框架

java - 如何在play框架中将字段设置为UNIQUE?

java - 如何查找 JSON 中包含的内容

java - WearableRecyclerView Android Wear OS

java - 斯坦福大学崩溃依赖解析器错误: loadmodel

java - 使用 Kotlin 开发时的 Android getGlobalApplicationContext()

java - Android/java echo nest 文件上传错误

Netbeans 中的 Java 应用程序与 Java 桌面应用程序

java - 计算 BigDecimal 会导致不准确的答案

Java将数组传递给构造函数