创建和验证参考编号

Creating and validating a reference number

基本上,我需要让用户输入参考编号;它不能自动生成。

需要2个数字,一个字母和一个数字。

这是我的代码,但我终生无法让它工作,我通过一种自动生成参考号的方式让它工作,但现在我们需要更改它以便让用户手动生成一个我只是坐着盯着 NetBeans,就像 "Oh errmmmm..."

 static String getReferenceNumber() { 
   Scanner refScanner = new Scanner(System.in);
    String referNumber = null;
    System.out.println("Please enter a Reference Number");
    System.out.println("It must be 2 Letters and 3 Numbers and a Number"); 
    String input = refScanner.nextLine().toUpperCase();  
    while (!Policy.refCheck(input)) {

        System.out.println("Please enter a Reference Number");
        System.out.println("It must be 2 Letters and 3 Numbers a Nuber");




    if (input.length() !=5) {
        referNumber = false;
    } else if ((!Character.isLetter(input.charAt(0)))
            ||!Character.isLetter(input.charAt(1))
            ||!Character.isDigit(input.charAt(2))
            ||!Character.isDigit(input.charAt(3))
            ||!Character.isDigit(input.charAt(4))){

    referNumber = false;
}


    System.out.println("");
    System.out.println(referNumber); 
    return referNumber;
}   

您从不将实际输入分配给 referNumber,而只是分配布尔值?

因此,当 return 值需要是一个字符串时,您最后 return 是一个布尔值或空值。

static String getReferenceNumber() { 
    Scanner refScanner = new Scanner(System.in);
    String referNumber = "";
    boolean test = false;  
    while (!test) {

        System.out.println("Please enter a Reference Number");
        System.out.println("It must be 2 Letters and 3 Numbers:");

        String input = refScanner.nextLine().toUpperCase();

        if (input.length() !=5) {
            test = false;
            System.out.println("Invalid reference");
        } else if ((!Character.isLetter(input.charAt(0)))
            ||!Character.isLetter(input.charAt(1))
            ||!Character.isDigit(input.charAt(2))
            ||!Character.isDigit(input.charAt(3))
            ||!Character.isDigit(input.charAt(4))){

           test = false;
           System.out.println("Invalid reference");
        } else {
            referNumber = input;
            test = true;
        } 
    }
    System.out.println(referNumber);
    return referNumber;
}

我已经更改了 while 循环的条件并更改了您的 if 语句。希望对您有所帮助。