如何用java解决这个问题?

如何用java解决这个问题?,java,Java,用户输入票证,票证应以B、E、F开头(不区分大小写,例如B、E、F也可接受),然后是3位数字 如果他们输入的票证格式比预订票证的格式正确 否则无效票证错误 比如说 爪哇票 输入票证>>b100 费用200美元 爪哇票 输入票证>>A609 无效票证,票证必须以B、F或E开头 爪哇票 输入票证>>1234567890987 无效票证,长度错误,长度必须在4到10之间 包容的 代码是 import java.util.*; public class Ticket { public stat

用户输入票证,票证应以B、E、F开头(不区分大小写,例如B、E、F也可接受),然后是3位数字

如果他们输入的票证格式比预订票证的格式正确 否则无效票证错误

比如说

爪哇票 输入票证>>b100 费用200美元 爪哇票 输入票证>>A609 无效票证,票证必须以B、F或E开头 爪哇票 输入票证>>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");
        }
    }
}

你想要达到的是:

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

尝试使用正则表达式:

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

阅读更多信息:

问题是什么?你的问题到底是什么?使用regex
[B,F,E,B,F,E][0-9]{3}
que??是用户输入票据。但是票证应该以B,E,F或B,E F开头。您应该添加一个检查,检查字符imo后面应该出现的3位数字。@RexWagenius good catch我错过了那部分“Error”消息不正确。@Blobonat当然,谢谢您的评论。