使用 Java 个字符和字符串验证用户输入

Validate User Input Using Java Chars and Strings

我已经看到这个问题问了 2 次,但我需要的正确回答没有得到解决。

在本次测评中, 您将设计和编写一个 Java 控制台应用程序 验证数据 入口 课程代码(如 IT4782) 和 报告 回来如果 课程代码有效或 不是 有效的。 这 应用 使用 Java 字符 和 要实现的字符串数据类型 验证。 你 能够 采用 任何一个 这 工具线环境 或者你的 当地的 Java 发展 环境 完成这个 作业。

的要求 这个应用程序是 如下: 申请是阅读 课程代码 进入 由用户 来自 键盘。 课程代码 制作 5个字符,应该 跟随 这些

规则:

如果 科目编号 已验证 或不。 如果课程代码不是 有效的, 应用程序应该打印 一个消息 解释为什么 课程 代码不是 有效。

输出应如下所示:

这是我的代码,我无法获得生成图片结果的代码。它输出所有无效消息。

package u4a1_validatecoursecode;

import java.util.Scanner;

public class U4A1_ValidateCourseCode {

    public static void main(String[] args) {
        // Larry Copy
        Scanner s = new Scanner(System.in);
        System.out.print("Enter a course code to validate (e.g. IT4782) : ");
        String code = s.nextLine();
        if (validateCode(code)) {
            System.out.println("Course code: " + "" + code + "" + " is valid.");
        } else {
            System.out.println("Not valid code");
        }
    }

    private static boolean validateCode(String code) {
        if (code.length() != 6) {
            return false;
        } else {
            //First character is always an upper case I or a lower case i
            if (code.charAt(0) != 'I' && code.charAt(0) != 'i') {
                return false;
            }
            System.out.println("integer is not an I or i");

            // Second character is always an upper case T or a lower case t
            if (code.charAt(1) != 'T' && code.charAt(1) != 't') {
                return false;
            }
            System.out.println("integer is not a T or t");

            // Third, fourth, fifth, and sixth characters are always digits (0-9)
            if (!Character.isDigit(code.charAt(2))) {
                return false;
            }
            System.out.println("integer 3 is not a number");

            if (!Character.isDigit(code.charAt(3))) {
                return false;
            }
            System.out.println("integer 4 is not a number");

            if (!Character.isDigit(code.charAt(4))) {
                return false;
            }
            System.out.println("integer 5 is not a number");

            if (!Character.isDigit(code.charAt(5))) {
                return false;
            }
            System.out.println("integer 6 is not a number");
            return false;
        }
    }
}
  1. 当您 return false; 之后的代码未执行时,您永远不会明白为什么 returns
  2. 如果你 return 只有 false 测试永远不会通过,你需要一个变量来验证 code
  3. 如果它进入一个 if(无效),您将收到消息,valid 将是 false

private static boolean validateCode(String code) {
    if (code.length() != 6) {
        return false;
    } else {
        boolean valid = true;
        //First character is always an upper case I or a lower case i
        if (code.charAt(0) != 'I' && code.charAt(0) != 'i') {
            System.out.println("integer is not an I or i");
            valid = false;
        }
        // Second character is always an upper case T or a lower case t
        if (code.charAt(1) != 'T' && code.charAt(1) != 't') {
            System.out.println("integer is not a T or t");
            valid = false;
        }
        // Third, fourth, fifth, and sixth characters are always digits (0-9)
        if (!Character.isDigit(code.charAt(2))) {
            System.out.println("integer 3 is not a number");
            valid = false;
        }
        if (!Character.isDigit(code.charAt(3))) {
            System.out.println("integer 4 is not a number");
            valid = false;
        }
        if (!Character.isDigit(code.charAt(4))) {
            System.out.println("integer 5 is not a number");
            valid = false;
        }
        if (!Character.isDigit(code.charAt(5))) {
            System.out.println("integer 6 is not a number");
            valid = false;
        }
        return valid;
    }
}

您使用的代码行过多: 这是我的工作:

   private static boolean validateCode(String code,String validCode) {
        boolean b=true;
        if (code.length() != 6) {
            return false;
        }
        for(int i=0;i<code.length();i++){
            if(code.toLowerCase().charAt(i)!=validCode.toLowerCase().charAt(i) && i<2){
                System.out.println("Character at "+i+" position is not an "+ validCode.charAt(i));
                b= false;
            }
            if(Character.isDigit(code.charAt(i)) && i>2){
                System.out.println("Character at "+i+" is not a digit");
                b= false;
            }
        }
    return b;
    }