2016-08-17 126 views
-7

用戶輸入的機票和車票應與B,E,F(不區分大小寫前。BEF也可)來啓動和3位..如何用java解決這個問題?

,如果他們進入票的正確格式比書票 否則無效票後錯誤。例如

的Java票務 輸入票>> B100 成本$ 200.0 的Java票務 輸入票>> A609 無效票,車票必須在B,F或E java的票務 輸入票>> 1234567890987 無效的開始票,錯誤的長度,長度必須爲4和10包容

之間

代碼是

import java.util.*; 
public class Ticket 
{ 

    public static void main(String[] ar)throws IOException 
    { 
     Scanner keb = new Scanner(System.in); 
     System.out.println("Enter ticket := "); 
     String ticket=keb.nextLine(); 



     if(checkTickt) 
     { 
      System.out.println("valid ticket"); 
     } 
     else{ 
      System.out.println("Invalid ticket, ticket must start with B, F or E"); 
     } 
    } 
} 
+1

有什麼問題嗎? –

+0

你的問題到底是什麼? – marstran

+2

使用正則表達式'[B,F,E,b,f,e] [0-9] {3}' – Blobonat

回答

1

你所想要實現這個比較:

Pattern pattern = Pattern.compile("(?i)[bef]\\d{3}"); 
if (pattern.matcher(ticket).matches()) { 
    System.out.println("valid ticket"); 
} else { 
    System.out.println("Invalid ticket, ticket must start with B, F or E"); 
} 
+0

您應該添加一個檢查字符imo後面的3位數字。 –

+0

@RexWagenius好趕上我錯過了那部分 –

2

嘗試使用正則表達式

import java.io.IOException; 
import java.util.Scanner; 

public class Ticket { 

    public static void main(String[] ar) throws IOException { 
     Scanner keb = new Scanner(System.in); 
     System.out.println("Enter ticket:"); 
     String ticket = keb.nextLine(); 
     String pattern = "[BbFfEe][0-9]{3}"; 


     if (ticket.matches(pattern)) { 
      System.out.println("Ticket is VALID."); 
     } else { 
      System.out.println("Ticket is INVALID, it must starts with B, b, F, f, E, e characters following by 3 digits."); 
     } 
    } 
} 

瞭解更多:Lesson: Regular Expressions

+0

「錯誤」消息是不正確的。 – Blobonat

+0

@Blobonat當然,謝謝你的評論。 – DimaSan