3
respostas

[Dúvida] buscaMatricula() com nome certo e matricula aleatória

Estava fazendo a aula com nomes e matriculas diferentes, e encontrei algo estranho:

public class TestaMap {

    public static void main(String[] args) {

        Curso javaColecoes = new Curso("Dominando as colecoes do Java", "Paulo Silveira");

        javaColecoes.adicionaAula(new Aula("Trabalhando com ArrayList", 21));
        javaColecoes.adicionaAula(new Aula("Criando uma Aula", 20));
        javaColecoes.adicionaAula(new Aula("Modelando com coleções", 24));

        javaColecoes.adicionaAluno(new Aluno("Andre Paiva", 0106));
        javaColecoes.adicionaAluno(new Aluno("Gabriel Nunes", 6789));
        javaColecoes.adicionaAluno(new Aluno("Guilherme Neres", 0222));

        System.out.println(javaColecoes.buscaMatricula(0106));
    }
}

O resultado do metodo sai com o nome certo, porem com outro valor que deveria ser a matricula:

Aluno: Andre Paiva | Matricula: 70

Se eu colocar a matricula (6789) funciona normal, com nome e matricula corretas. A matricula (0222) também dá um valor errado: 146. Ao criar uma matricula (0001) aparece apenas 1. Existe um problema com zeros iniciais?

3 respostas

Oi, André

Sim!

0106 é um número octal que vale 70 em decimal


class Main {
    public static void main(String[] args) {
        // Representação em diferentes bases 
        int binario = 0b0001_0000;
        int octal = 020;
        int decimal = 16;
        int hexa = 0x10;
        System.out.println(binario + ", " + octal + ", " + decimal + ", " + hexa);
        // saída: 16, 16, 16, 16 
    }
}

Obrigado Luis. Mas então se existisse um aluno com matrícula 0106 como eu faria para que o resultado saísse certo?

Via de regra, se não for fazer operação matemática, prefira usar número como string

Ex.: CPF, RG, Telefone, Matrícula

Como já foi utilizado "integer", você tem que obrigatoriamente tirar o zero da esquerda


    javaColecoes.adicionaAluno(new Aluno("Andre Paiva", 106));
    javaColecoes.adicionaAluno(new Aluno("Guilherme Neres", 222));

    System.out.println(javaColecoes.buscaMatricula(106));
    System.out.println(javaColecoes.buscaMatricula(222));