Duvida, Urna Eletronica

Boa noite!

Estou fazendo um aplicativo simulador Urna Eletrônica. No caso estou com uma dúvida nele, não estou tendo sucesso em retornar o Vetor corretamente para mandar em outros métodos, no caso, para continuar outras opções do seu menu, estou mostrando aqui o código que está mais correto, que está rodando de boa, mais estou com outro código que está dado erro nos retornos do meu vetor… isso que não estou conseguindo agilizar esse lado… se puderem me ajudar só nesse detalhe… agradeço!!!

segue o código!

Main

public class Main
{

    public Main()
    {
        new UrnaVotacao ();
    }
    /**
     * @param args the command line arguments
     */
    public static void main (String[] args)
    {
        new Main ();
    }
}

Candidato

public class Candidato
{
    private Scanner cap = new Scanner (System.in);;
    private int n;
    private String NomeCandidato;
    private int numeroDoCandidato;
    private String PartidoDoCandidato;
    private String TextoCandidato;

    public String getNomeCand ()
    {
        return this.NomeCandidato;
    }

    public void setNomeCand ()
    {
        System.out.print ("Digite Nome: ");
        this.NomeCandidato = cap.next ();
    }

    public void setNomeCand (String NomeCand)
    {
        this.NomeCandidato = NomeCand;
    }

    public String getPartidoDoCandidato ()
    {
        return this.PartidoDoCandidato;
    }

    public void setPartidoDoCandidato ()
    {
        System.out.print ("Digite Partido (3 silabas): ");
        this.PartidoDoCandidato = cap.next ();
    }

    public void setPartidoDoCandidato (String PartidoDoCandidato)
    {
        this.PartidoDoCandidato = PartidoDoCandidato;
    }

    public String getTextoCandidato ()
    {
        return TextoCandidato;
    }

    public void setTextoCandidato (String TextoCandidato)
    {
        this.TextoCandidato = TextoCandidato;
    }

    public int getNumeroDoCandidato ()
    {
        return this.numeroDoCandidato;
    }

    public void setNumeroDoCandidato ()
    {
        System.out.print ("Digite o Codigo (4 digitos): ");
        String ent = cap.next ();
        this.numeroDoCandidato = Integer.parseInt (ent);
    }

    public void setNumeroDoCandidato (int numeroDoCandidato)
    {
        this.numeroDoCandidato = numeroDoCandidato;
    }
}

UrnaVotacao

public class UrnaVotacao
{

    int x;
    private Scanner cap = new Scanner (System.in);
    private int Candidato;
    private int numopc;
    private int vetor[];

    public UrnaVotacao ()
    {
        Urna ();
    }

    public void Urna ()
    {

        System.out.println ("--------------------------------");
        System.out.println ("       Urna Eletronica");
        System.out.println ("--------------------------------");
        System.out.println ("       Menu de operação");
        System.out.println ("[1] - Cadastrar candidato");
        System.out.println ("[2] - Iniciar votação");
        System.out.println ("[3] - Exibir Resultado");
        System.out.println ("[4] - Sair");
        System.out.println ("--------------------------------");
        System.out.print ("Entre com a opcao desejada: ");
        numopc = cap.nextInt ();

        //se for a primeira opcao cadastra o candidato
        if (numopc == 1)
        {
            //entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados
            System.out.print ("Qual o número de candidatos? ");
            String quantCandidatos = cap.next ();
            x = Integer.parseInt (quantCandidatos);

            CadCandidato (numopc, x);
            System.out.println ("?? "+numopc);
            Urna ();
        } else if (numopc == 2) //se for a segunda opcao comeca a votacao
        {
            UrnaVotacao ();
        } else if (numopc == 3) //se for a terceira opcao exibe o resultado final
        {
        } else if (numopc == 4) //se for a quarta opcao saira do programa
        {
        } else //se nao for nenhuma das opcoes correspondidas retorna e manda digitar a opcao correta!
        {
            System.out.println ("Opcao errada, digite a opicao correta!!");
            Urna ();
        }
    }

    public void UrnaVotacao ()
    {
        System.out.println ("--------------------------------");
        System.out.println ("       Votação!");
        System.out.println ("--------------------------------");
        System.out.println ("       Menu de Votação");
        System.out.println ("[1] - Votar pelo nome");
        System.out.println ("[2] - Votar pelo código");
        System.out.println ("[3] - Listar Candidatos");
        System.out.println ("[4] - Retornar tela");
        System.out.println ("--------------------------------");
        System.out.print ("Entre com a opcao desejada: ");
        numopc = cap.nextInt ();


        if (numopc == 1)
        {
        } else if (numopc == 2)
        {
        } else if (numopc == 3)
        {
            //entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados
            System.out.print ("Qual o número de candidatos? ");
            String quantCandidatos = cap.next ();
            x = Integer.parseInt (quantCandidatos);

            CadCandidato (numopc, x);
            System.out.println ("&&& "+numopc);
            UrnaVotacao ();
        } else if (numopc == 4) //se a opcao for quatro ele retorna o menu enterior
        {
            Urna ();
        } else //se nao for nenhuma das opcoes correspondidas retorna e manda digitar a opcao correta!
        {
            System.out.println ("Opcao errada, digite a opicao correta!!");
            UrnaVotacao ();
        }
    }

    private int CadCandidato (int numopc, int x)
    {

        if (numopc == 1)
        {
            /*//entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados
            System.out.print ("Qual o número de candidatos? ");
            String quantCandidatos = cap.next ();
            x = Integer.parseInt (quantCandidatos);
            */
            Candidato[] a = new Candidato[x];


            System.out.println ("--------------------------------");
            System.out.println ("       Cadastrar Candidato!");
            System.out.println ("--------------------------------");
            //cadastrando cada candidato no vetor
            for (int q = 0; q < x; q++)
            {
                a[q] = new Candidato ();
                a[q].setNomeCand ();
                a[q].setNumeroDoCandidato ();
                a[q].setPartidoDoCandidato ();
                System.out.println ("................................");
            }

            //    Candidato[] a = new Candidato[x];
            //laco pra ver se esta guardando no vetor os nomes dos candidatos
            System.out.println (" ****************** ");
            for (int i = 0; i < x; i++)
            {
                System.out.println ("????");
                System.out.println (" cand " + a[i].getNomeCand ());
                System.out.println (" part " + a[i].getPartidoDoCandidato ());
                System.out.println (" numcand " + a[i].getNumeroDoCandidato ());
            }
            System.out.println (" ***************** ");
        }else{
            Candidato[] a = new Candidato[x];
            System.out.println ("????");
            //laco pra ver se esta guardando no vetor os nomes dos candidatos
            System.out.println (" ****************** ");
            for (int i = 0; i < x; i++)
            {
                System.out.println ("????");
                System.out.println (" cand " + a[i].getNomeCand ());
                System.out.println (" part " + a[i].getPartidoDoCandidato ());
                System.out.println (" numcand " + a[i].getNumeroDoCandidato ());
            }
            System.out.println (" ***************** ");

        }
        return numopc;
    }
}

Obrigado pela atenção!!

Boa noite amigo…

Não entendi sua dúvida, voce nao está conseguindo cadastrar candidatos no vetor?

isso mesmo … não estou conseguindo cadastrar no vetor…

Certo, agora entendi…

Por exemplo aqui abaixo:

for (int q = 0; q < x; q++) { a[q] = new Candidato (); a[q].setNomeCand (); a[q].setNumeroDoCandidato (); a[q].setPartidoDoCandidato (); System.out.println ("................................"); }

Quando faço essas rotinas de cadastrar um objeto em uma posiçao de vetor, uso um if dentro do for que varre o vetor, procurando uma posição nula para daí sim cadastrar(Logo que vc cria um vetor, as posições vazias dele estão nulas). Senão vc vai acabar sobrescrevendo uma posição onde já existe um candidato, entende? E isso também te possibilita gerar um aviso de vetor cheio, evitando sobrescrita. Ficaria mais ou menos assim:

for (int q = 0; q < x; q++) { if (a[q] == null) { a[q] = new Candidato (); a[q].setNomeCand (); a[q].setNumeroDoCandidato (); a[q].setPartidoDoCandidato (); System.out.println ("................................"); break; }

Notou que usei um break? Você deve usa-lo sempre nestes casos, pois vai cadastrar em uma posição nula e sair deste for. Se vc não colocar o break, ele vai cadastrar a mesma coisa em todas as posições nulas que encontrar(enquanto o for estiver rodando).

Veja se isso te ajuda colega!

:wink:

Poxa, muito obrigado Ruttmann … não tinha pensado nisso… detalhes mesmo que acaba se passando vazio! … mais uma outra dúvida que me ocorreu, e nesse caso acabou não dando certo, é retornar o vetor cheio para poder utilizar esse vetor nos outros métodos, no caso com seus menus específicos… exemplo: opção listar candidatos, nesse caso ele não irá retornar o vetor para poder listar os candidatos cadastrados… certo? … mudei esse código algumas vezes e não obtive sucesso… oque estou fazendo de errado?? … =/

Valeu mesmo pela atenção…

Olá … fiz algumas alterações pra conhecer o vetor mais mesmo assim não estou conseguindo jogar os cadastros nos vetores… está dando trabalho já isso. Olhem ai e me fala qual o erro que to cometendo… =/

public class UrnaVotacao
{

    int x;
    private Scanner cap = new Scanner (System.in);
    private int Candidato;
    private int numopc;
    private int[] vetor;
    Candidato a = new Candidato ();

    public UrnaVotacao ()
    {
        Urna ();
    }

    public void Urna ()
    {

        System.out.println ("--------------------------------");
        System.out.println ("       Urna Eletronica");
        System.out.println ("--------------------------------");
        System.out.println ("       Menu de operação");
        System.out.println ("[1] - Cadastrar candidato");
        System.out.println ("[2] - Iniciar votação");
        System.out.println ("[3] - Exibir Resultado");
        System.out.println ("[4] - Sair");
        System.out.println ("--------------------------------");
        System.out.print ("Entre com a opcao desejada: ");
        numopc = cap.nextInt ();

        //se for a primeira opcao cadastra o candidato
        if (numopc == 1)
        {
            //entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados
            System.out.print ("Qual o número de candidatos? ");
            String quantCandidatos = cap.next ();
            x = Integer.parseInt (quantCandidatos);

            vetor = new int[x];

            CadCandidato (numopc, vetor);
            System.out.println ("?? " + numopc);
            Urna ();
        } else if (numopc == 2) //se for a segunda opcao comeca a votacao
        {
            UrnaVotacao (x);
        } else if (numopc == 3) //se for a terceira opcao exibe o resultado final
        {
        } else if (numopc == 4) //se for a quarta opcao saira do programa
        {
        } else //se nao for nenhuma das opcoes correspondidas retorna e manda digitar a opcao correta!
        {
            System.out.println ("Opcao errada, digite a opicao correta!!");
            Urna ();
        }
    }

    public void UrnaVotacao (int x)
    {
        System.out.println ("--------------------------------");
        System.out.println ("       Votação!");
        System.out.println ("--------------------------------");
        System.out.println ("       Menu de Votação");
        System.out.println ("[1] - Votar pelo nome");
        System.out.println ("[2] - Votar pelo código");
        System.out.println ("[3] - Listar Candidatos");
        System.out.println ("[4] - Retornar tela");
        System.out.println ("--------------------------------");
        System.out.print ("Entre com a opcao desejada: ");
        numopc = cap.nextInt ();


        if (numopc == 1)
        {
        } else if (numopc == 2)
        {
        } else if (numopc == 3)
        {
            //entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados

            CadCandidato (numopc, vetor);
            System.out.println ("&&& " + numopc);
            UrnaVotacao (x);
        } else if (numopc == 4) //se a opcao for quatro ele retorna o menu enterior
        {
            Urna ();
        } else //se nao for nenhuma das opcoes correspondidas retorna e manda digitar a opcao correta!
        {
            System.out.println ("Opcao errada, digite a opicao correta!!");
            UrnaVotacao (x);
        }
    }

    private int CadCandidato (int numopc, int[] x)
    {


        if (numopc == 1)
        {
            /*//entrando para cadastrar os candidatos
            //quantidade de candidatos a ser cadastrados
            System.out.print ("Qual o número de candidatos? ");
            String quantCandidatos = cap.next ();
            x = Integer.parseInt (quantCandidatos);
             */



            System.out.println ("--------------------------------");
            System.out.println ("       Cadastrar Candidato!");
            System.out.println ("--------------------------------");
            //cadastrando cada candidato no vetor
            for (int q = 0; q < x.length; q++)
            {


                
                //x[q]= a.getNomeCand ();
                //x[q].setNumeroDoCandidato ();
                //x[q].setPartidoDoCandidato ();
                System.out.println ("................................");

            }

            //    Candidato[] a = new Candidato[x];
            //laco pra ver se esta guardando no vetor os nomes dos candidatos
            System.out.println (" ****************** ");
            for (int i = 0; i < x.length; i++)
            {
                System.out.println ("????");
                System.out.println (" cand " + x[i]);
                /*System.out.println (" part " + a[i].getPartidoDoCandidato ());
                System.out.println (" numcand " + a[i].getNumeroDoCandidato ());*/
            }
            System.out.println (" ***************** ");
        } else
        {

            System.out.println ("^^^^");
            //laco pra ver se esta guardando no vetor os nomes dos candidatos
            System.out.println (" ****************** ");
            for (int i = 0; i < x.length; i++)
            {
                System.out.println ("%%%%");
                System.out.println (" cand " + x[i]);
                /*System.out.println (" part " + a[i].getPartidoDoCandidato ());
                System.out.println (" numcand " + a[i].getNumeroDoCandidato ());*/
            }
            System.out.println (" ***************** ");

        }
        return Candidato;
    }
}