我需要编写一个程序,该程序从用户读取3个字母和3位数字并将它们插入到一个数组中(格式为:ABC-123
)。JAVA车牌号码
我怎样才能让一个循环,要求用户输入5 * 3个字母和5 * 3数字,直到他正确回答(只有3个字母“请输入3个字母”,只有3个数字后“请输入3位数字?”
我迄今为止代码:
package bmm;
import java.util.*;
import java.util.regex.Pattern;
public class bmm {
public static void main(String[] args) {
Scanner scr = new Scanner(System.in);
String[] letter = new String[5];
int[] number = new int[5];
int db = 0;
do {
for (int i = 0; i < letter.length; i++) {
System.out.println("3 letters please:");
letter[i] = scr.nextLine();
if (Pattern.matches("[a-zA-Z]+", letter[i]) == false || letter[i].length() != 3) {
System.out.println("not letters or too short/long");
} else {
db++;
}
}
} while (letter[db].length() != 3 && Pattern.matches("[a-zA-Z]+", letter[db]) != true);
}
}
}
非常感谢您的回答!你解决了我的问题,并帮助我理解了这个dowhile循环。我是一个新手,对于这个迟钝的问题感到抱歉。无论如何,你离开我挂了:)如果不是这样,你会如何解决这个问题? –
我不确定有什么重大的改变。你可以说'!Pattern.matches(“[a-zA-Z] +”,letter [i])'而不是'Pattern.matches(“[a-zA-Z] +”,letter [i])= =假'。你可以摆脱布尔型,使用'while(true){...}'作为循环,并说'if(!Pattern.matches(...)|| letter [i] .length()! = 3){System.out.println(...); } else {break; }'这将在输入有效时立即离开循环。 – ajb