我正在尝试检查输入字符串: - 长度 - 类型 - 最后的特殊字符
输入是这样的身份证24659213Q。
所以我现在得到的是:
public void datosUsuario() {
System.out.print("Write ID: ");
input = scanner.nextLine();
}
//ID check
public void comprobacion() {
System.out.println("Checking ID length...");
if (input.length() == 9){
status = true;
System.out.println("Length: OK!");
} else {
System.out.println("Length not OK! Try again!\n");
status = false;
}
}
所以我检查整个字符串是否有8 + 1长度,现在我在检查它是否有8位数字和输入末尾的字符时遇到问题。
任何想法都会被贬低!谢谢!
答案 0 :(得分:3)
我会使用正则表达式:
String input = scanner.nextLine();
input.matches("/^[0-9]{8}[A-Za-z]$/);
答案 1 :(得分:1)
一个简单的方法是:
//ID check
public void comprobacion() {
System.out.println("Checking ID length...");
if (input.length() == 9) {
if (Character.isAlphabetic(input.charAt(8)) {
status = true;
System.out.println("OK!");
} else {
status = false;
System.out.println("Length: OK, but last character must be alphabetic");
}
} else {
System.out.println("Length not OK! Try again!\n");
status = false;
}
答案 2 :(得分:1)
您可以使用reg ex,
public static void comprobacion(String input) {
status = false;
if(input.matches("\\d{8}\\w{1}"))
{
status = true;
}
}
这里,\ d {8} =八位数 \ w {1} =一个字母字符
答案 3 :(得分:0)
您可以使用“Character.isDigit()”来确定某个字符是否为数字。换句话说,您可以创建一个for循环来遍历每个字符,检查它是否是一个数字。这是一个例子:
String input = "24659213Q";
for(int c = 0; c < input.length()-1; c++){
//Checks all but the last character
if( !Character.isDigit( input.charAt(c) ) ){
System.out.println("The String does not start with 8 digits");
}
}
if( Character.isDigit( input.charAt(8) ) ){
//Checks only last character
System.out.println("The String does not end with a char");
}
答案 4 :(得分:0)
如上所述,也可以遵循正则表达的方法。还有一种方法可以做到。
1)将字符串分成两个字符,分别为8个字符,另一个字符串为最后一个字符。
2)解析第一个String 捕获NUmberFormatException的try catch块中的Integer.parseInt(subStringOfFirst8Char)。
如果你没有发现异常,那么它就是错误的。