如果输入有效或无效,如何检查用户输入?

时间:2017-11-27 09:17:31

标签: java arrays

public static void main(String args[]) {
    Scanner scanner = new Scanner(System.in);
    Random random = new Random();
    String word[] = { "apple" };

    char wordguess[] = word[random.nextInt(word.length)].toCharArray();
    int totalOfGuesses = wordguess.length;
    char[] userGuess = new char[totalOfGuesses]; // save the users input

    System.out.print("Please input your guess : ");
    char input = scanner.nextLine().charAt(0);
}

如果输入有效或输入无效,如何检查用户输入? 然后,如果它有效,则将其存储在名为值的数组中 否则,将字符保存在名为invalid的数组中 感谢您的帮助

例如:
有效:_ _ _ _ _无效:_ _ _ _ _
请输入您的猜测:a

例如:
有效:a _ _ _ _无效:_ _ _ _ _
请输入您的猜测:a

例如:
有效:a _ _ _ _无效:b _ _ _ _
请输入您的猜测:b

例如:
有效:a _ _ _ _无效:b _ _ _ _ 请输入您的猜测:b(不会再保存b)

2 个答案:

答案 0 :(得分:0)

这很容易,你可以在谷歌上找到这个。始终检查您希望用户输入的时间:

if (input != null)
//store it

请记得检查您的扫描仪。

答案 1 :(得分:0)

制作一个set并在其中添加所有无效字母。

在每个输入中,您必须遍历此集并检查输入char是否是之前输入的。

此外,使用while进行无限循环,直到用户输入有效的char

考虑这个简单的代码来解决部分问题,你必须继续......

此代码将继续从用户那里获取输入,直到他输入有效的char

public static void main(String args[]) {
    try (Scanner scanner = new Scanner(System.in);) {
        boolean invalidInput = true;
        Set<Character> invalidChars = new HashSet<>(Arrays.asList('a', 'b', 'c', 'd'));

        WhileLoop: while (invalidInput) {
            System.out.print("Please input your guess (one letter): ");
            String inputLine = scanner.nextLine();

            if (inputLine == null || inputLine.trim().isEmpty() || !String.valueOf(inputLine.charAt(0)).matches("[a-zA-Z]")) {
                System.out.println("Invalid input, Please enter a letter (A to Z).");
                continue;
            }

            for (char c : invalidChars) {
                if (inputLine.charAt(0) == c) {
                    System.out.println("Invalid latter, You have entered this letter before, choose another one.");
                    invalidChars.add(c);
                    continue WhileLoop;
                }
            }
            invalidInput = false;
        }
    }
}