Artigos de Tecnologia e Negócios > Programação

Ordenando números em Java

Alex Felipe
Alex Felipe

Por esses dias a Mega-Sena acumulou de novo... Chegou ao valor de R$ 200 milhões! Porém, eu sempre fico muito indeciso em qual jogo fazer, então vou pedir para que o meu sistema jogue por mim. Vamos criar nosso array de int de 6 posições para armazenar os números:


int numeros = new int[6];

Agora varremos nosso array e preenchemos cada posição com um valor aleatório entre 1 e 60, utilizando a classe Random e seu método nextInt():


for (int i = 0; i <= numeros.length; i++) { 
    numeros[i] = new Random().nextInt(60);
}

Imprimindo o nosso array com o método toString() da classe Arrays:


System.out.println(Arrays.toString(numeros));

Resultado:

[10, 6, 54, 47, 0, 35]

Ele gerou 6 números aleatórios! Mas, espera aí... um desses números é o 0??? A Mega-Sena sorteia apenas números entre 1 e 60... O método nextInt() com parâmetro 60 significa que será retornado um valor do tipo int entre 0 e 59. Para resolver esse problema, precisamos somar 1 no momento que geramos os números aleatórios:


for (int i = 0; i < numeros.length; i++) {
     numeros[i] = new Random().nextInt(60) + 1; }

Resultado:

[53, 32, 60, 1, 40, 24]

Ótimo! O sistema gerou um jogo da Mega-Sena! E, como podemos ver, dessa vez o número 60 apareceu.

Mas ainda tem um probleminha, esses números estão desordenados... Imagina na hora de preencher o volante da Mega-Sena: marco o 53, depois o 32 e depois terei que avançar para o número 60! E quando sair o resultado? Terei que procurar a dedo? Que horror! O método estático sort() da classe Arrays nos auxilia na ordenação de vetores numéricos:


Arrays.sort(numeros); 
System.out.println(Arrays.toString(numeros));

Resultado:

[13, 21, 37, 48, 51, 55]

Excelente! Conseguimos gerar o nosso jogo da Mega-Sena! Mas agora, ao invés de utilizar um array, eu quero usar uma solução mais sofisticada. Uma List,por exemplo:


List numeros = new ArrayList();

Agora, vamos preencher a nossa List com um while:


while (numeros.size() < 6) { 
    int numero = new Random().nextInt(60) + 1; 
    numeros.add(numero); 
}

E para ordenar? Usarei o método sort() da classe Arrays? Infelizmente o método sort() da classe Arrays espera apenas arrays como parâmetro e uma List é uma Collection... Porém existe o método estático sort() para Collection utilizando a classe Collections:


Collections.sort(numeros);
System.out.println(numeros);

Resultado:

[9, 12, 16, 49, 49, 56]

Ele gerou o jogo como esperado! Mas, espera um pouco... 49 e 49? Como assim?? A Mega-Sena não permite jogos com números repetidos... A interface List possui o método contains() que permite verificar se um número já existe dentro da lista. Então, basta adicionar um if no momento da inserção dos números:


while (numeros.size() < 6) { 
    int numero = new Random().nextInt(60) + 1; 
    if(!numeros.contains(numero)){ 
        numeros.add(numero); 
    }
}

Nesse trecho estou dizendo que, se não existir o novo número aleatório dentro da lista de números, adicione. Testando a nova implementação:


Collections.sort(numeros); 
System.out.println(numeros);

Resultado:

[16, 20, 27, 34, 39, 52]

Agora o nosso sistema não permite números repetidos!

Vimos como é fácil ordenar números em Java, pois já temos métodos disponíveis para resolver esse problema. Lembre-se sempre desses passos antes de ordenar:

Gostou da List? Quer aprender mais APIs e bibliotecas do Java? A Alura possui um curso de Java que explica com mais detalhes as principais APIs e bibliotecas, com 3.158 alunos inscritos e com recomendação de 96%.

Leia também:

Artigos de Tecnologia e Negócios > Programação

Cursos profissionais de Programação é na Alura, comece agora!

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1206 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?

Acesso completo por 1 ano

Estude 24h/dia onde e quando quiser

Novos cursos todas as semanas