我试图写一个代码,让我判断用户输入的项目是否有效.该项的格式为:NNN-LL-nnnn,其中N是数字,L是字母.

我的代码应该能够通过判断字符串中的所有字符来确定该项是否有效,因此,例如,如果用户输入"222-DN-1055",则该项有效,但如果该项为"2-DN-1055",则该项无效.

我只能使用我在课程中学习的java方法,这就是为什么我try 使用字符串缓冲区.我不能用正则表达式.

现在,我已经完成了以下代码:

public class ItemChecker{

    //vars
    private String userInput;
    private StringBuffer strBuff;
    private String validity;

    //constructor
    public ItemChecker(){
            strBuff=new StringBuffer();
    }

    //set
    public void setUserInput(String userInput){
            this.userInput=userInput;
    }

    //compute
    public void computeValidity(){
        for(int i=0;i<userInput.length();i++){
            if (Character.isDigit(userInput.charAt(0))){
                strBuff.append(userInput.charAt(0));
            }
            else if (Character.isDigit(userInput.charAt(1))){
                strBuff.append(userInput.charAt(1));
                }
            else if (Character.isDigit(userInput.charAt(2))){
                strBuff.append(userInput.charAt(2));
                }
            else if (userInput.charAt(3)=='-'){
                strBuff.append(userInput.charAt(3));
                }
            else if (Character.isLetter(userInput.charAt(4))){
                strBuff.append(userInput.charAt(4));
                }
            else if (userInput.charAt(4) == 'c' || userInput.charAt(i) == 'd'|| userInput.charAt(i) == 'g' || userInput.charAt(i) == 'k' || userInput.charAt(i) == 'l' || userInput.charAt(i) == 'm'|| userInput.charAt(i) == 'o'|| userInput.charAt(i) == 'r' || userInput.charAt(i) == 's' || userInput.charAt(i) == 't' || userInput.charAt(i) == 'w'){
                strBuff.append(userInput.charAt(4));
                }
            else if (Character.isLetter(userInput.charAt(5))){
                strBuff.append(userInput.charAt(5));
                }
            else if (userInput.charAt(5) == 'k' || userInput.charAt(i) == 'e' || userInput.charAt(i) == 'n' || userInput.charAt(i) == 'w' || userInput.charAt(i) == 'l' || userInput.charAt(i) == 'y' || userInput.charAt(i) == 'd'|| userInput.charAt(i) == 'h' || userInput.charAt(i) == 'm' || userInput.charAt(i) == 's' || userInput.charAt(i) == 'o' || userInput.charAt(i) == 'x'){
                strBuff.append(userInput.charAt(5));
                }
            else if (userInput.charAt(6)=='-'){
                strBuff.append(userInput.charAt(6));
                }
            else if (Character.isDigit(userInput.charAt(7))){
                strBuff.append(userInput.charAt(7));
                }
            else if (Character.isDigit(userInput.charAt(8))){
                strBuff.append(userInput.charAt(8));
                }
            else if (Character.isDigit(userInput.charAt(9))){
                strBuff.append(userInput.charAt(9));
                }
            else if (Character.isDigit(userInput.charAt(10))){
                strBuff.append(userInput.charAt(10));
                }
            else if (Character.isDigit(userInput.charAt(11))){
                strBuff.append(userInput.charAt(11));
                }
            else if (Character.isDigit(userInput.charAt(12))){
                strBuff.append(userInput.charAt(12));
            }
            else{
                strBuff.append("Your registration plate is not valid.");
            }
            }

        validity=strBuff.toString();
    }

    //get
    public String getValidity(){
            return validity;
    }
}

代码实际上不起作用,我不知道如何从这里开始.此外,我如何确保如果用户在最后输入了六个以上的数字,代码也会被视为无效.

推荐答案

这是您的代码的一个清理版本,尽管它并不完整.您可以按照代码的样式来完成其余的逻辑.

public void computeValidity(){
        if (userInput.length() < 8 && userInput.length()> 13){
            //if length is not in between 8 to 13
            return; //exits function
        }
        for(int i=0;i<userInput.length();i++) {
            char c = userInput.charAt(i);
            if (i <= 2) {
                if (Character.isDigit(c)) {
                    //do whatever for true
                } else {
                    //return false etc
                }
            } else if (i == 3 || i == 6) {
                if (c == '-') {
                    //do whatever for true
                } else {
                    //return false etc
                }
            } else if (i <= 5) {
                //check for county identifiers
            } else {
                //finally check for digits
                if (Character.isDigit(c)) {

                } else {

                }
            }
        }
    }

Java相关问答推荐

访问 Arraylist of Objects 中的特定元素

java - 如何判断用户是否在java中的字符串中输入了正确的字符?

Jpa阅读器Spring Batch

TCP 发送缓冲区没有做任何事情

如何管理 Wordle Game (JavaFx) 中的重复字母?

按当前月份排序 List 到最近六个月

在 Spring Boot 应用程序的服务层中正确使用 Optionals

Javax.swing 如何删除前一个矩形

我如何使用 Dockerfile 将 Maven 依赖项存储在 Docker 映像中

工厂设计模式在以下示例中如何帮助我们?

如何制作未经开发者许可不得转售的应用程序

如何将react 式 Java StepVerifier 应用于 Pojo

使用方法返回的收集器时泛型类型不匹配 - Java 17

如何从 Spring Statemachine 中获取当前子状态和父状态?

为什么我不能将其他类的常量添加到 java 中的 switch 语句中?

Java中的重复输出

如何在 Intellij 中关闭“将文件添加到 git”?

Android - 中止崩溃

在使用 Javax webtarget 客户端发送 HTTPS 请求时,如何避免对包含“:[”的查询参数进行编码?

如何在 Java 中创建包含运算符的变量?