Dicas para Iniciantes em JAVA

Desenvolvi em JAVA um algoritmo que pergunta quantos números você deseja sortear e depois sorteia a ordem deles.
Obs.: Nenhum numero sai repetido.

Como sou iniciante em java, gostaria que vocês dessem uma analisada em meu código e me digam o que posso melhorar ou qualquer outra observação importante.

<code=java>

package sorteio;
    
import javax.swing.JOptionPane;

public class Sorteio {

    public static void main(String[] args) {
        int tamanho = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a quantidade de numero que voce deseja sortear", "Sorteio", JOptionPane.INFORMATION_MESSAGE));
        
        int numero[] = new int[tamanho];
        boolean repetiu = false;
        int cont = 0;
        String mensagem = "";
        
        do {
            repetiu = false;
            int tmp = (int)(Math.random() * tamanho+1 );
            for(int vef = 0; vef<tamanho; vef++){
                if(tmp == numero[vef]){
                    repetiu = true;
                    break;
                }
            }
            if(repetiu == false){
                numero[cont] = tmp;
                if(cont < tamanho - 1){
                    mensagem += numero[cont] + ", "; 
                } else {
                    mensagem += numero[cont] + ".";
                }
                cont++;
            }
        } while (cont < numero.length);
        JOptionPane.showMessageDialog(null, "A ordem dos numeros sorteados foram: " + mensagem, "Resultado!", JOptionPane.INFORMATION_MESSAGE);
        
    }
    
}

Obrigado!

Boa noite,

  • Você poderia definir papéis em classes específicas.
  • Definir os devidos acessadores private
  • “messagem” poderia ser uma classe para tratar as possíveis mensagem
  • Fazer uso de tratamento de exceções.

Abraços

Procure:
a) aprender mais sobre coleções (PRATIQUE);
b) estar atualizado com as versões da linguagem de implementação (PRATIQUE);
c) continuar participando de fóruns;
d) canais no YouTube que ensinem linguagens a partir do 0 (PRATIQUE);
e) manter constância no aprendizado (PRATIQUE).
f) procure compreender o padrão/paradigma da orientação a objeto (PRATIQUE).

Depois, faça um curso superior:
1º Ciências da Computação.
2º Engenharia de Software.
3º Tecnólogo em Análise e Desenvolvimento de Sistemas (mais voltado à inserção rápida no mercado de trabalho)
4º Outros cursos relacionados.
Eu não tenho como falar muito sobre os cursos pois estou estudando ADS.

Melhorar a qualidade da codificação é mais complexo do que realizar uma simples refatoração, pois envolve muitos fatores.

Quando tiver tempo, veja com paciência:

  1. o modelo de McCall;
  2. os padrões Gof (guangue dos quatro - gang of four);
  3. programação defensiva; e
  4. refatoração de Martin Fowler (PRATIQUE).
  5. veja os conteúdos acima como dicas de programação e não se preocupe em compreender plenamente, pegue uma coisa aqui, outra ali (PRATIQUE) e quando estiver apto a se profissionalizar ai você se preocupa em ser detalhista.

É muita coisa a ser levada em consideração, por isso, a recomendação de fazer um curso superior quando estiver com um entendimento básico, pois ensinar é um dom e não é qualquer professor que vai te passar o conteúdo com qualidade.

Eu também não sou lá estas coisas em java, mas para fins de compartilhamento de conhecimento promovi uma refatoração na codificação, mas pode ser que haja outras mais simples e eficientes.

   public static void main(String[] args) {
    Set<Integer> num = new TreeSet<>();
    
    /*previsão de erro, valores numéricos maiores que Integer.MAX_VALUE e demais strings que não podem ser associadas 
      a números inteiros na linha a seguir: -> veja sobre o try -> chatch -> finally para dar robustez à aplicação*/
    int len = Integer.parseInt(JOptionPane.showInputDialog("Qual a quantidade de números a serem sorteados")),
            range = len;

    while (len > 0) {
        len = (num.add((int) (Math.random() * range + 1))) ? --len : len;
    }
    ArrayList<Integer> desordenado = new ArrayList<>(num.stream().collect(Collectors.toList()));
    Collections.shuffle(desordenado);
    System.out.println("Ordenado: "+num+"\ndesordenado: "+desordenado);
}