Ajuda com Vetor

2 respostas
ursodamongolia

Gente não consigo colocar o vetor fora dos void no codigo abaixo, eu queria colocar o vetor fora dos void usa-lo em duas class diferentes:

import java.util.Calendar;   
import java.util.Date;   
import java.util.GregorianCalendar; 
import javax.swing.*;
import java.io.*;
class Funcionario
{
        double salario;
        String RG,esta1,nome,depto,qtd,ano,per;
        boolean esta;
        Calendar calendar = new GregorianCalendar(); 
        int temp,anoent,year = calendar.get(Calendar.YEAR),qtd1;   
    void cadastra()
    {
        qtd = (JOptionPane.showInputDialog(null,"Digite quantos Funcionários deseja Cadastrar:","Novo Cadastro",1));
        qtd1 = Integer.parseInt(qtd); 
        int vetor[]= new int[qtd1];
        for(int i=0;i<vetor.length;i++){
            nome = JOptionPane.showInputDialog(null,"Digite o nome do funcionário: ","Novo Cadastro",1);
            salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o salario: ","Novo Cadastro",1));
            ano = "s";
            while(ano=="s")
            {           
                anoent = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o ano de entrada do funcionário: ","Novo Cadastro",1));
                if(anoent > year)
                {
                    JOptionPane.showMessageDialog(null,"Ano incorreto","ERRO",1);
                }
                else
                {
                    ano = "n";
                }
            }
        }
    }

    void bonifica()
    {
        temp = year - anoent;
        per = JOptionPane.showInputDialog(null,"Funcionario Continua trabalhando na Empresa? ","PERGUNTA!!!",2);
        if(per == "sim")
        {
            esta1 = "SIM";
            if(temp >= 2 && temp < 5){
                salario = salario + salario * 0.5;
            }
        }
        else
        {
            if(per == "nao")
            {
                esta = false;
                if(esta == false)
                {
                    esta1 = "NÃO";
                }
            }
        }
    }


    void mostra()
    {   
        int vetor[]= new int[qtd1];
        for(int i=0;i<vetor.length;i++)
        {
            JOptionPane.showMessageDialog(null,"Nome: "+nome+"\n"+"Ano de Entrada: "+anoent+"\n"+"Salario: "+salario+"\n"+"Esta na empresa: "+esta1,"Dados dos Funcionários",3);
        }
    }
}

Só da se eu colocar o vetor em cada void , mais só que a informação que está no primeiro vetor não vai pro outro e vice e versa

2 Respostas

lucianodacunha.net

olá,

estou com algumas dúvidas sobre seu código...mas vou falar o que observei....

no método cadastra, qdo vc quer cadastrar vários funcionários e não cria um array de funcionários, a cada loop vc estará sobrepondo o funcionário cadastrado anteriomente...

dessa forma quando vc quiser exibir todos funcionários cadastrados, como no método cadastra terá somente o último funcionário cadastrado.

talvez seria interessante vc criar a classe Funcionário e depois a classe ListadeFuncionários ou Empresa, guardaria um array ou lista mesmo de Funcionários.

aí sim, ter um método cadastra que poderia guardar todos os Funcionários que deseja cadastrar.

se a dúvida é como manter um arrays durante a passagem de agumentos/parâmetros o codigo abaixo dá um exemplo...

public class TestaArrayDeFuncionarios {
    
    public static void main(String args[]){
        
        Funcionario f1 = new Funcionario();
        Funcionario f2 = new Funcionario();
        Funcionario f3 = new Funcionario();
            
        Funcionario [] arrayDeFuncionarios = {f1, f2, f3};

        exibeVetor(arrayDeFuncionarios);
            
    }
    
    private static void exibeVetor(Funcionario[] arrayDeFuncionarios) {
        
        for (Funcionario funcionario : arrayDeFuncionarios)
            System.out.println(funcionario.toString());
    }
    
}

[]'s

ursodamongolia

cara eu mudei um pouco o codigo , mais mesmo assim não consegui entender o negocio do vetor, ai o codigo novo:

import java.io.*; import java.util.*; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import javax.swing.*; class Funcionario { double salario; String RG,esta1,nome,depto,ano; boolean esta; Calendar calendar = new GregorianCalendar(); int temp,anoent,year = calendar.get(Calendar.YEAR),qtd,per,per2,per3,com=1,anocont,aume=5; void cadastra() { per = JOptionPane.showConfirmDialog(null,"Deseja Abrir o Sistema de Cadastros?","SISTEMA DE CADASTRO | PERGUNTA!!!",JOptionPane.YES_NO_OPTION); if(per == 0) { while(com == 1) { qtd = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite quantos Funcionários deseja Cadastrar:","SISTEMA DE CADASTRO",3)); if(qtd == 0) { JOptionPane.showMessageDialog(null,"Digite valores maiores que 0","SISTEMA DE CADASTRO | ERRO",0); com = 1; } else { if(qtd >= 1) { com = 0; } } } int vetor[]= new int[qtd]; esta1 = "SIM"; for(int i=0;i<vetor.length;i++){ nome = JOptionPane.showInputDialog(null,"Digite o nome do funcionário: ","SISTEMA DE CADASTRO",3); salario = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o salario: ","SISTEMA DE CADASTRO",3)); ano = "s"; while(ano=="s") { anoent = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o ano de entrada do funcionário: ","SISTEMA DE CADASTRO",3)); if(anoent > year) { JOptionPane.showMessageDialog(null,"Ano maior que atual "+"\n"+"Digite o ano correto!!!","SISTEMA DE CADASTRO | ERRO",0); } else { ano = "n"; } } if(anoent <= 1990) { anocont = year - 1990; per3 = JOptionPane.showConfirmDialog(null,"Funcionário Com mais de : "+anocont+" Anos de Empresa"+"\n"+"Deseja Atribuir 20%? ","SISTEMA DE CADASTRO | AVISO",JOptionPane.OK_CANCEL_OPTION); if(per3 == 0) { aume = 20; } else { if(per3 == -1) { } } } else { } } temp = year - anoent; if(temp >= 2 && temp < 5) { salario = salario + salario * aume/100; } per2 = JOptionPane.showConfirmDialog(null,"Deseja ver os funcionários cadastrados?","SISTEMA DE CADASTRO | PERGUNTA!!!",JOptionPane.YES_NO_OPTION); if(per2 == 0) { for(int i=0;i<vetor.length;i++) { JOptionPane.showMessageDialog(null,"Nome: "+nome+"\n"+"Ano de Entrada: "+anoent+"\n"+"Salario: "+salario+"\n"+"Esta na empresa: "+esta1,"SISTEMA DE CADASTRO | Dados dos Funcionários",1); } } else { JOptionPane.showMessageDialog(null,"Até Mais","SISTEMA DE CADASTRO",1); } } else { if(per == -1) { esta = false; JOptionPane.showMessageDialog(null,"Até Mais","SISTEMA DE CADASTRO",1); if(esta == false) { esta1 = "NÃO"; } } } } }

Criado 28 de agosto de 2010
Ultima resposta 30 de ago. de 2010
Respostas 2
Participantes 2