我正在尝试编写一个小程序,该程序从用户读取车牌号并返回是否有效。我不太确定如何循环浏览某些字符是否正确。

注意:这应该是冰岛的车牌号。

对于冰岛车牌,前2个字符为大写字符串。第三个字符可以是大写字母或数字,而最后两个字符也必须是数字。这是有效车牌的示例:“ HX567”。

无论如何,到目前为止,这是我的代码,希望这里的人可以向我展示如何遍历字符串并检查前两个字符是否为字母和大写等。

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);
        }


    }

}

最佳答案

您可以使用正则表达式:

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运算符

关于java - 车牌号验证程序JAVA,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23586680/

10-11 09:15