如何检查和验证字符串索引的多个字符?

时间:2017-01-07 16:22:53

标签: java while-loop do-while

不会说这是我正在上大学的一个项目。现在,特定部分需要用户输入以提供有关重新编号的详细信息,该编号的长度需要为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循环?为这个令人难以置信的愚蠢问题道歉。

2 个答案:

答案 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;
}