Java se bug de instrução [fechado]

0

Este é o meu código:

    while(valid==false)
    {
        System.out.println("Please enter a reference number which is two letters followed by three digits and a letter(B for business accounts and N for non business accounts)");
        ref = keyboard.nextLine();       

        if (ref.length() != 6)
        {
            System.out.println("The reference number must be 6 characters long");
            errors = errors + 1;
        }            

        if ((Character.isDigit(ref.charAt(0))== true) || (Character.isDigit(ref.charAt(1))== true))
        {
            System.out.println("The first 2 characters must be letters");
            errors = errors + 1;
        }

        if ((Character.isDigit(ref.charAt(2))== false) || (Character.isDigit(ref.charAt(3))== false)||(Character.isDigit(ref.charAt(4))== false))
        {
            System.out.println("The 3rd,4th and 5th characters must be numbers");
            errors = errors + 1;
        }

        if ((!ref.toUpperCase().endsWith("B"))||(!ref.toUpperCase().endsWith("N"))) 
        {
            System.out.println("The 6th character must be either B(for business accounts) or N(for non business accounts) ");
            errors = errors + 1;
        }

        if (errors==0)
        {
            valid=true;
        }
    }

    return ref;

Ao executar o programa usando uma referência: aa123b (um estado aceito), ele exibe: "O 6º caractere deve ser B (para contas empresariais) ou N (para contas não comerciais)"

Ele não deve exibir nada e, em vez disso, deve retornar a String.

    
por andrew fenny 27.12.2015 / 05:49

1 resposta

1

Se o último caractere deve ser B ou N , a condição em seu código está incorreta. Em vez de

(!ref.toUpperCase().endsWith("B")) || (!ref.toUpperCase().endsWith("N"))

deve ser

(!ref.toUpperCase().endsWith("B")) && (!ref.toUpperCase().endsWith("N"))

Você precisa de and em vez de or . Leia assim: "Se a última letra não for B e a última letra não for N, então o erro" .

    
por Cos64 27.12.2015 / 06:58