首页 > 解决方案 > 试图弄清楚如何只接受来自用户输入的 1 个字符

问题描述

我不确定如何验证用户是否只输入一个字符进行输入。我知道我所拥有的长度检查根本不正确。我只是用它来填充。请帮忙。我尝试了许多不同的方法,并在这个网站和其他网站上搜索了几天以找到答案。

final char SIZE = 10;
char [] letter = new char [SIZE];
// initiallizing input device
Scanner scan = new Scanner(System.in);
for (char index = 0; index < SIZE;)
{
    System.out.println ("Please enter Letter #" + (index + 1));// gets letter from user
    while ((!scan.hasNext("[A-Za-z]+")) || (!scan.hasNext(length(1)))){
        if(!scan.hasNext(length (1))){
            System.out.println ("Please only enter one Letter at a time: ");
            letter [index] = scan.next().charAt(0); // accepts first character entered by user
        }
        if(!scan.hasNext("[A-Za-z]+")){
            System.out.println ("Please enter a valid Letter: ");
            letter [index] = scan.next().charAt(0); // accepts first character entered by user
        }
        else if((scan.hasNext("[A-Za-z]+")) && (scan.next(length(1)))){// makes sure letter entered is a letter
            letter [index] = scan.next().charAt(0); // accepts first character entered by user
            index++;// increases index if proper letter entered
        }
    }
}
for (char index = 0; index < SIZE; index++)
{
    System.out.println ("Letter #" + (index + 1) + ": " + letter [index]);// prints characters entered by user in order
}

标签: javaarraysstringuser-input

解决方案


有很多方法可以做到这一点。一种方法是 AK 发布的内容。一种方法如下:

for (char index = 0; index < SIZE;)
{
    String temp = scan.nextLine();

    if (temp.length() != 1)
    {
        // This means their input was too big
    }
    else
    {
        // This means their input was one character
    }

}

你也可以使用scan.next().charAt(0);这行代码只会将控制台中的一个字符作为输入。

如果您有任何问题或此答案不是您想要的,请在下方评论,我很乐意为您提供帮助。


推荐阅读