2014-05-10 181 views
1

我想寫一個小程序,從用戶讀取一個車牌號碼,並返回它是否有效。我不太確定如何循環查看某些字符是否正確。車牌號碼驗證程序JAVA

注意:這是假設爲冰島牌照號碼牌。

對於冰島牌照號碼牌,頭兩個字符是大寫字母。第三個字符可以是大寫字母或數字,最後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

你可以使用正則表達式:從維基百科

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

提取物:」 ......正則表達式(縮寫正則表達式或正則表達式)是形成一個搜索模式,主要用於在圖案與字符串匹配用的字符序列。所以在這裏:[A-Z][A-Z]([A-Z]|\\d)\\d\\d我做了一個由兩個大寫字母組成的表達式,一個大寫字母或一個數字後跟兩個數字。

進一步向下打破錶達:

[A-Z]裝置從A到Z(所以大寫字母)在範圍內的任何字符

\\d意味着一個數字。

|是運營商還是在Java中

+0

好吧,我還沒有碰到過這種方法來之前,我是否需要導入任何軟件包爲它工作? – Birgir

+0

是的,你需要導入兩個包: 'import java.util.regex.Matcher; import java.util.regex.Pattern;' – james

+0

好吧,我試過了,我添加了你提供給我的代碼的代碼。但是,如果我輸入「5H566」,它不會給我一個像「無效牌照」這樣的錯誤。你知道如何解決這個問題嗎? – Birgir