阻止用户在java Scanner中输入数字?

时间:2014-09-07 22:59:18

标签: java java.util.scanner

我在阻止用户使用扫描仪类输入数字时遇到了一些麻烦。这就是我所拥有的:

package palindrome;

import java.util.Scanner;

public class Palindrome {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);
        String word;
        String inverse = "";

        System.out.println("Write a sentence or word: ");

        while (!input.hasNext("[A-Za-z]+")) {
        System.out.println("Not valid! Try again: ");
        input.nextLine();
    }
        word = input.nextLine();

        word = word.replaceAll("\\s+","");
        word = word.toLowerCase();

        int length = word.length();
        length = length - 1;

        for (int i = length; i >= 0; i--) {
            inverse = inverse + word.charAt(i);
        }

        if (word.equals(inverse)) {
            System.out.println("Is a palindrome.");
        } else {
            System.out.println("Is not a palindrome.");
        }

    }
}

基本上当我输入一个单词或句子时,我希望它检查输入中是否有任何数字,如果有,那么你需要输入另一个数字直到它没有。以下是输出示例:

  • 写一个句子或单词:

    - > 11

  • 无效!再试一次:

    - > 1测试

  • 无效!再试一次:

    - >测试1

  • 不是回文。

正如您所看到的,它适用于大多数情况,但是当我输入一个单词FIRST然后输入一个空格后跟一个数字时,它会在没有数字的情况下对其进行评估。我假设这发生了,因为在while循环中只检查input.hasNext但它应该是input.hasNextLine我相信检查整个字符串。但是,如果我这样做,我就不会有任何争论。非常感谢!

1 个答案:

答案 0 :(得分:2)

将您的正则表达式从[A-Za-z]+更改为^[A-Za-z]+$,以防止输入字符串中的任何位置的数字