Problema com Cadastro em vetores

3 respostas
E

ola, sou novo aqui no forum e em programaçao java.
estou com um problema nas funcoes de cadastro q seguem ai no codigo.
o problema é o seguinte,
eu compilo o programa e quando seleciono a opçao para realizar algum cadastro, executa somente o primeiro codigo da funçao
ex: x[i].codigoCargo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o codigo do cargo"));
quando eu informo o codigo o prog fexa sozinho.
alguem poderia me ajudar ja tentei d varias manerias e n estou conseguindo.

principal ------------------------------------------------------
package gerenciamentouniversidade; 
/**
 *
 * @author Eduardo
 */
import javax.swing.JOptionPane;
public class Main 
{
static professores vetorPro [] = new professores[10];
static administrativos vetorAdm [] = new administrativos[8];
static titulos vetorTitulos [] = new titulos [3];
static cargos VetorCargo [] = new cargos [5];

    
    public static void main(String[] args) 
    {
        menu();
        
    }
    public static void menu ()
    {
        char escolha = '?';
        while(escolha != 'f')
        {
            escolha = (char) Integer.parseInt(JOptionPane.showInputDialog(null,"Informe a Opçao.\n 1- Cadastrar titulos \n 2- Cadastrar cargos \n 3- Cadastrar professores \n 4- Cadastrar funcionario administrativo \n 5- Mostrar relaçao de funcionaios \n 6- Mostrar relacao de professores \n 7- Excluir titulos \n 8- Excluir cargos \n 9- Excluir professores \n F- finalizar"));
            switch (escolha)
            {
                case 1: cadastroTitulos(); break;
                case 2: cadastroCargos(); break;
                case 3: cadastroProfessor(); break;
                case 4: cadastroFuncAdm(); break;
                case 5: mostraFuncionarios();break;
                case 6: mostraProfessor(); break;
                case 7: excluiTitulo(); break;
                case 8: excluiCargo();break;
                case 9: mostracargo();;break;
                case 'f': break;
                default : JOptionPane.showMessageDialog(null,"Opção Inavalida!");
            }            
        }
        
    }
    public static void cadastroCargos ()
    {
        int i = 0;       
        //cargos x = new cargos();
        cargos x[] = new cargos[5];
        
        
        
            x[i].codigoCargo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o codigo do cargo"));
            x[i].Descrisao = JOptionPane.showInputDialog(null,"Descrisao do cargo");
            x[i].valorSalario = Float.parseFloat(JOptionPane.showInputDialog(null,"Digite o valor do salario para o cargo"));
            //VetorCargo[i] = x;
            i++;
    }
    public static void cadastroTitulos ()
    {
        titulos x = new titulos();
        //titulos x[] = new titulos[3];
        int i=0;
       
            x.codigoTitulo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o Codigo do titulo"));
            x.descrisao = JOptionPane.showInputDialog(null,"Descrisao do titulo(ex:Mestre)");
            x.valorHoraAula = Float.parseFloat (JOptionPane.showInputDialog(null,"Informe o valor da hora/aula"));
            vetorTitulos[i] = x;
            i++;
    }
       
     public static void cadastroProfessor()
     {
         professores x = new professores();
         //professores x[] = new professores [10];
        int i=0;
         
            x.nome = JOptionPane.showInputDialog(null,"Nome do professor");
            x.numeroProfessor = Integer.parseInt(JOptionPane.showInputDialog(null,"Numero do professor"));
            x.cargaHoraria = Integer.parseInt(JOptionPane.showInputDialog(null,"Carga horaria semanal")); 
            x.codigoTitulo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o codigo do titulo")); 
            vetorPro[i] = x;
            i++;
     }
     public static void cadastroFuncAdm()
     {
       administrativos x = new administrativos();
       //  administrativos x[] = new administrativos[8];
       int i=0;
       
           x.numAdm = Integer.parseInt(JOptionPane.showInputDialog(null,"Numero do Funcionario"));
           x.nome = JOptionPane.showInputDialog(null,"Nome do funcionario");
           x.codigoCargo = Integer.parseInt(JOptionPane.showInputDialog(null,"Codigo do cargo"));
           vetorAdm[i] = x;
           i++;
     }
cargos ----------------------------------------------------------
package gerenciamentouniversidade;

/**
 *
 * @author Eduardo
 */
class cargos {
    int codigoCargo;
    float valorSalario;
    String Descrisao;

}
com a funçao deste modo ele n fexa, mas salva os dados sempre no memos endereço de memoria apagando o cadastro anterior. onde esta o erro?
public static void cadastroCargos ()
    {
        int i = 0;       
        cargos x = new cargos();
        //cargos x[] = new cargos[5];
        
        
        
            x.codigoCargo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o codigo do cargo"));
            x.Descrisao = JOptionPane.showInputDialog(null,"Descrisao do cargo");
            x.valorSalario = Float.parseFloat(JOptionPane.showInputDialog(null,"Digite o valor do salario para o cargo"));
            VetorCargo[i] = x;
            i++;
    }

3 Respostas

peczenyj

tente isso:

cargos x[] = new cargos[5]; /* agora vc tem q inicializar cada posição do array ;-) */ x[i] = new cargos();

E

ok ja tinha conseguido arrumar isso mesmo assim vlw.
o problema é q ele n ta salvando os dados no vetor
oque sera q esta errado.

E
estou tendo problemas para imprimir o vetor, ele imprime somente o ultimo cadastro alguem poderia me dar uma luz de onde esta o erro? presiso mto acabar isso. desde ja agradeço. a funcao de cadastro ficou assim:
public static void cadastroCargos ()   
    {   
                    
            int k;   
            cargos x = new cargos();      
            int qtd = Integer.parseInt(JOptionPane.showInputDialog(null,"Deseja cadastrar quantos cargos(Max - 5)"));   
            if (qtd > 5)   
            {   
                JOptionPane.showMessageDialog(null,"Valor Invalido!");   
                menu();   
            }   
            for (k=0;k<qtd;k++)   
            {   
            x.codigoCargo = Integer.parseInt(JOptionPane.showInputDialog(null,"Informe o codigo do cargo"));   
            x.Descrisao = JOptionPane.showInputDialog(null,"Descrisao do cargo");   
            x.valorSalario = Float.parseFloat(JOptionPane.showInputDialog(null,"Digite o valor do salario para o cargo"));      
            }   
            VetorCargo[iCargos] = x;   
            //iCargos++;   
}

e a funcao de imprimir assim:

public static void mostracargo() {   
        int j;   
        if (VetorCargo[0] == null)   
        {   
            JOptionPane.showMessageDialog(null,"Nada Cadastrado");   
           menu();   
        }   
        for (j=0;j<VetorCargo.length;j++)   
        {   
            JOptionPane.showMessageDialog(null," "+VetorCargo[j].Descrisao+"\n "+VetorCargo[j].codigoCargo+"\nSalario Mensal: "+VetorCargo[j].valorSalario);   
             menu();   
        }   
    }
Criado 5 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 3
Participantes 2