2016-08-17 100 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