我想检查键盘输入以验证车牌格式
String formatoPatente = "[A-Za-z]{3}[\\-\\s][0-9]{3}";
String patente,marca;
int añoPatentamiento;
double kilometraje,tamañobaul;
System.out.println("Ingrese la patente del automovil");
patente=teclado.nextLine();
boolean valido = patente.matches(formatoPatente);
while(!valido){
System.out.println("Formato invalido de patente. Intente nuevamente.");
patente=teclado.next();
}
我认为正则表达式没问题,但仍然无效。
答案 0 :(得分:0)
next()将读取字符,直到找到空格。因此,在提供的空间之后可能无法读取输入数字。看看下面的代码是否有助于从nextLine读取输入,而nextLine读取完整的行本身。
Scanner teclado = new Scanner(System.in);
String formatoPatente = "[A-Za-z]{3}[\\-\\s][0-9]{3}";
String inputData, marca;
int añoPatentamiento;
double kilometraje, tamañobaul;
System.out.println("Ingrese la patente del automovil");
Pattern patente = Pattern.compile(formatoPatente);
Matcher matcher;
boolean notMatched = true;
while(notMatched) {
inputData = teclado.nextLine();
matcher = patente.matcher(inputData);
if(matcher.find()) {
System.out.println("Match Found");
notMatched = false;
} else {
System.out.println("Formato invalido de patente. Intente nuevamente.");
}
}