车牌号码验证程序JAVA

时间:2014-05-10 21:47:45

标签: java validation loops numbers licensing

我试图编写一个小程序,从用户读取车牌号码,如果有效则返回。我不太确定如何循环查看某些字符是否正确。

注意:这应该是冰岛牌照号码牌。

使用冰岛牌照号码牌,前2个字符是大写字母。第三个字符可以是大写字母或数字,最后2个字符也必须是数字。以下是有效牌照的示例:" HX567"。

无论如何,到目前为止,这里是我的代码,希望有人在这里可以告诉我如何循环字符串并检查前2个字符是否是字母和大写等.......

import java.util.Scanner;
import java.util.*;

public class Bilnumer {

    public static void main(String[] args) {
        Scanner skanni = new Scanner(System.in);

        System.out.println("Good day, please enter your license plate number.");
        System.out.println("License plate number: ");
        String bilnumer = skanni.nextLine();

        bilnumer = bilnumer.toUpperCase();

        int lengd = bilnumer.length();

        if (lengd > 5)
        {
            System.out.println("License plate numbers can not be more then 5 characters");
        }else{
            System.out.println("Your license plate number is: "+bilnumer);
        }


    }

}

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式:

Matcher m = Pattern.compile("[A-Z][A-Z]([A-Z]|\\d)\\d\\d").matcher(bilnumer);
if (m.find()) {
    System.out.println(bilnumer + " is a valid number plate");
} else {
    System.out.println(bilnumer + " is not a valid number plate");
}

从维基百科中提取:' ...正则表达式(缩写为regex或regexp)是形成搜索模式的字符序列,主要用于与字符串'进行模式匹配。所以这里:[A-Z][A-Z]([A-Z]|\\d)\\d\\d我做了一个表达式,由两个大写字母,一个大写字母或一个数字后跟两个数字组成。

进一步打破表达:

[A-Z]表示从A到Z(所以大写字母)

范围内的任何字符

\\d表示数字。

|是java

中的or运算符