我在阻止用户使用扫描仪类输入数字时遇到了一些麻烦。这就是我所拥有的:
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我相信检查整个字符串。但是,如果我这样做,我就不会有任何争论。非常感谢!
答案 0 :(得分:2)
将您的正则表达式从[A-Za-z]+
更改为^[A-Za-z]+$
,以防止输入字符串中的任何位置的数字