Programa que apura candidato numa eleicção

Tenho um programa quer:

  • Le nº de candidato
  • Le os candidatos
  • Le o nº de leitores
  • Le os votos
  • Apura
  • Mostra vencedor

Tenho uma classe candidato com atributos* ( * = Me corrijam se tiver errado)

  • codigo
  • valor (String)

Fiz o seguinte:

package eleicoes;

import java.util.Scanner;

public class Eleicoes {

public static void main(String[] args) {
 
    Scanner sc = new Scanner(System.in);
    
    System.out.println("Digite a quantidade de candidatos");
    Integer Candidatos = Integer.parseInt(sc.nextLine());
    
    Candidato[] candidatoArray = new Candidato[Candidatos];
    
    for (int i = 0; i < Candidatos ; i++) {
        System.out.println("Entre com os candidatos -> ");
        Integer Codigo = Integer.parseInt(sc.nextLine()); 
    }
    
    System.out.println("Digite a quantidade de eleitores");
    Integer Eleitores = Integer.parseInt(sc.nextLine());
    
    Eleitor[] eleitorArray = new Eleitor[Eleitores];
    
    for (int i = 0; i < Eleitores; i++) {
        System.out.println("Entre com o codigo dos eleitores");
        Integer codigoEleitor = Integer.parseInt(sc.nextLine());
    }
   
}

}

Ola,
a ideia é simular uma urna?
Vc já votou alguma vez?

A ideia eh trabalahar com array
Preciso fazer este programa usando e entendendo referencias.

Eh um exercicio comum para reforcar a ideia f3 vetor

não respondeu

Dicas: Use nomes de variáveis que correspondam àquilo que a variável representa.
Integer é diferente de int.
Não há necessidade de pôr o sufixo array ao declarar um array, geralmente se usa uma variável no plural.

package eleicoes;

import java.util.Scanner;

public class Eleicoes {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        System.out.println("Digite a quantidade de candidatos");
        int quantidade = Integer.parseInt(sc.nextLine());
        Candidato[] candidatos = new Candidato[quantidade];
        for (int i = 0; i < quantidade; i++) {
            System.out.println("Digite o código do candidato:");
            int codigo = Integer.parseInt(sc.nextLine()); 
            Candidato candidato = new Candidato();
            candidato.setCodigo(codigo);
            candidatos[i] = candidato;
        }

        System.out.println("Digite a quantidade de eleitores");
        quantidade = Integer.parseInt(sc.nextLine());
        Eleitor[] eleitores = new Eleitor[quantidade];
        for (int i = 0; i < quantidade; i++) {
            System.out.println("Digite o código do eleitor:");
            int codigo = Integer.parseInt(sc.nextLine()); 
            Eleitor eleitor = new Eleitor();
            eleitor.setCodigo(codigo);
            eleitores[i] = eleitor;
        }
    }
}

Entendi o uso de uma variavel no plural.

Queria entender esta do Integer e int , pois meu prof disse que é referncia a algo, essa minha duvida.

Ele usou Double
No outro exemplo de sala :slight_smile:
package produtos;

import java.util.Scanner;

public class Produtos {

public static final int ARRAY_LENGTH = 3;

public static void main(String[] args) {

    Produto[] produtoArray = new Produto[ARRAY_LENGTH];

    Scanner scanner = new Scanner(System.in);

    for (int i = 0; i < ARRAY_LENGTH; i++) {
        System.out.println("Entre com o nome: ");
        String nome = scanner.nextLine();

        System.out.println("Entre com o preco");
        Double preco = Double.parseDouble(scanner.nextLine());

        produtoArray[i] = new Produto(nome, preco);
    }

    Produto produtoMaisCaro = produtoArray[0];
    for (int i = 1; i < produtoArray.length; i++) {
        if (produtoArray[i].getPreco() > produtoMaisCaro.getPreco()) {
            produtoMaisCaro = produtoArray[i];
        }
    }
    System.out.println(produtoMaisCaro);

}

}

São tipos por referencia. Integer, Double, Character, etc.

int é um tipo de dado primitivo que ocupa 32 bits (4 bytes)
Integer é uma classe que encapsula um int.

Vou comecar de novo! kkk

Tive esclarecimento com o professor de algumas duvidas, ele ainda fez melhor, mostrou alguns pontos importantes.

Faz todo o sentido o int, int é um tipo primitivo, e Integer é um tipo por referencia.

package correcao;

import java.util.Scanner;

public class Correcao {

private static  Scanner sc = new Scanner(System.in);

private static Candidato[] candidatoArray;
private static String[] votoArray;


public static void main(String[] args) {
    
   
    
    lerCandidatos();
    lerVotos();
    contarVotos();
    Candidato candidatoVencedor = candidatoArray[0];
    candidatoVencedor = encontrarVencedor(candidatoVencedor);
    mostrarResultado(candidatoVencedor);
}

private static void mostrarResultado(Candidato candidatoVencedor) {
    System.out.println("Vencedor: ");
    System.out.println(candidatoVencedor);
}

private static Candidato encontrarVencedor(Candidato candidatoVencedor) {
    for (int i = 1 ; i < candidatoArray.length ; i++) {
        if (candidatoArray[i].getVotos() > candidatoVencedor.getVotos()) {
            candidatoVencedor = candidatoArray[i];
        }
    }
    return candidatoVencedor;
}

private static void contarVotos() {
    for (String voto : votoArray) {
        for (Candidato candidato : candidatoArray) {
            if (candidato.getCodigo().equals(voto)) {
                candidato.addVotos();
                break;
            }
        }
        //todo objeto java é herdeiro de outro
    }
    //ianserfor fo it
}

private static void lerVotos() throws NumberFormatException {
    System.out.println("Entre com o numero de eleitores");
    int quantidadeDeEleitores = Integer.parseInt(sc.nextLine());
    
    votoArray = new String[quantidadeDeEleitores];
    
    for (int i = 0; i < quantidadeDeEleitores; i++) {
        System.out.println("Entre com o voto");
        votoArray[i] = sc.nextLine();
    }
}

private static void lerCandidatos() throws NumberFormatException {
    System.out.println("Entre com a quantidade de candidatos");
    int quantidadeDeCandidatos = Integer.parseInt(sc.nextLine());
    candidatoArray = new Candidato[quantidadeDeCandidatos];
    
    for (int i = 0; i < quantidadeDeCandidatos; i++) {
        System.out.println("Entre com o codigo do condadato");
        candidatoArray[i] = new Candidato(sc.nextLine());
        
    }
}

}