Validador CNPJ e CPF

Coloco CNPJ e CPF validos e ele diz como invalidos, não sei o que está errado, se puderem me ajudar.

CNPJ

String cnpj;
int res = 0, mul = 2, cal;
char ver1, ver2;
            
System.out.print("Informe o CNPJ: ");
cnpj = teclado.next();
    
for (int i = 11; i >= 0; i--) {
        res += (((int) cnpj.charAt(i) - 48) * mul);
        mul++;
        if (mul == 10) {
            mul = 2;
        }
}
cal = res % 11;
if (cal == 0 || cal == 1) {
    ver1 = '0';
} else {
    ver1 = (char) ((11 - cal) + 48);
}
    for (int i = 12; i >= 0; i--) {
        res += (((int) cnpj.charAt(i) - 48) * mul);
        mul++;
        if (mul == 10) {
            mul = 2;
        }
    }
    cal = res % 11;
    if (cal == 0 || cal == 1) {
        ver2 = '0';
    } else {
        ver2 = (char) ((11 - cal) + 48);
    }

    if (cnpj.charAt(12) == ver1 && cnpj.charAt(13) == ver2) {
        System.out.println("Resultado: " + cnpj.substring(0, 2) + "."
                + cnpj.substring(2, 5) + "." + cnpj.substring(5, 8) + "/" + cnpj.substring(8, 12) + "-"
                + cnpj.substring(12, 14) + " CNPJ valido!");
    } else {
        System.out.println("!ERRO! " + cnpj.substring(0, 2) + "."
                + cnpj.substring(2, 5) + "." + cnpj.substring(5, 8) + "/" + cnpj.substring(8, 12) + "-"
                + cnpj.substring(12, 14) + " CNPJ Invalido!");
    }

CPF

  System.out.print("Informe um CPF: ");
    String cpf = usuario.next();
    int res = 0, cal;
    char ver1, ver2;
    for (int i = 0; i < 9; i++) {
        res += ((int)(cpf.charAt(i)-48)* (10-i));
    }
    cal = 11 - (res % 11);
    if (cal == 10 || cal == 11) {
        ver1 = '0';
    }
    else{
        ver1 = (char)(cal + 48);
    }
    for (int i = 0; i < 10; i++) {
        res += ((int)(cpf.charAt(i)-48)* (11-i));
    }
    cal = 11 - (res % 11);
    if(cal == 10 || cal == 11){
        ver2 = '0';
    }
    else{
        ver2 = (char)(cal + 48);
    }
    
    if (ver1 == cpf.charAt(9) && ver2 == cpf.charAt(10)) {
        System.out.println("Resultado: "+cpf.substring(0,3)+"."+cpf.substring(3,6)+"."+
                cpf.substring(6,9)+"-"+cpf.substring(9,11)+" valido");
    }
    else{
        System.out.println("!ERRO! "+cpf.substring(0,3)+"."+cpf.substring(3,6)+"."+
                cpf.substring(6,9)+"-"+cpf.substring(9,11)+" CPF Invalido");
    }

o que vc quer fazer aqui?

que tal

int digito = Character.getNumericValue( cnpj.charAt(i) )

Ai ficaria assim? Mas mesmo assim não deu certo :confused:

int digito = Character.getNumericValue( cnpj.charAt(i) );
res += digito;
mul++;

escreve o cpf que vc leu e os digitos verificadores que vc calculou