不会说这是我正在上大学的一个项目。现在,特定部分需要用户输入以提供有关重新编号的详细信息,该编号的长度需要为11个字符。索引上的字符(8)和(10)需要是字母,而其余字符必须是数字。如果用户输入了错误的字符,则需要再次输入该字符直到正确为止。我遇到了很多麻烦,我觉得应该是一件非常容易的东西,我只是没有看到。这是我到目前为止玩过的东西(请注意,这段代码非常糟糕,并且使用了非常基本的java函数,因为我们在课程中还没有学到更多)
String regiNum;
boolean validRegi = true;
System.out.print("Enter registration num: ");
regiNum = keyboard.nextLine();
char firstChar = regiNum.charAt(8), secChar = regiNum.charAt(10);
while(validRegi == true){
if(!(firstChar >= 'A' && firstChar <= 'z' && secChar >= 'A' && secChar <= 'z')){
System.out.print("Enter registration num again: ");
regiNum = keyboard.nextLine();
validRegi = false;
}
}
我甚至没有检查其他字符的验证,以确定它们是否为数字。什么最适合?也许一个while循环?为这个令人难以置信的愚蠢问题道歉。
答案 0 :(得分:2)
最简单的方法是使用for循环并检查字符是否一个一个有效。你可以尝试这样的事情:
boolean isValid(String regiNum) {
//check if length is 11, return false if not
for(int i=0;i<11;i++) {
if(i==8 || i==10) {
//check if its letter, return false if not
}else{
//check if its a number, return false if not
}
}
return true;
}
答案 1 :(得分:0)
这种方法完成了你想做的工作!
boolean isValid(String reg) {
//check if length is 11, return false if not
if(reg.length <11){
for(int i=0;i<11;i++) {
if(i==8 || i==10) {
if(!Character.isLetter(reg.charAt(i))){
return false;
}
}else{
//check if its a number, return false if not
if(!Character.isDegit(reg.charAt(i))){
return false;
}
}
}
}
return true;
}