Vetor me ajudem...!

6 respostas
E

Tenho um problema, estou fazendo um programa que lê os dados de um funcionário e depois retorna o valor após feitos os calculos, mais não estou conseguindo passar o vetor através do método,vo colocar o código pra ficar mais fácil o entedimento

classe principal

//********************

//classe principal
import javax.swing.*;

public class Prog25soma
{
	public static void main(String args[])
	{
		Prog25 salario= new Prog25();
		String saida;
		JTextArea texto = new  JTextArea(9,10);
		
		saida="PROGRAMA 25 \n";
		
		int nd,ht,cod;
		double sh;
		for(int i=0;i<5;i++)
		{
		
		  cod=Integer.parseInt(JOptionPane.showInputDialog("Entre com o código do "+(i+1)+"° funcionário"));
		   
		  sh=Double.parseDouble(JOptionPane.showInputDialog(null,"Dígite seu salário hora","ATENÇÂO NO SALÁRIO",JOptionPane.WARNING_MESSAGE));
		  nd=Integer.parseInt(JOptionPane.showInputDialog(null,"Dígite o número de depedentes","ATENÇÂO NO NÙMERO!",JOptionPane.WARNING_MESSAGE ));
          ht=Integer.parseInt(JOptionPane.showInputDialog(null,"Dígite quantas horas foram trabalhadas","ATENÇÂO HORAS TRABALHADAS",JOptionPane.WARNING_MESSAGE));
          salario.setDados(nd,ht,sh,cod);
        }
        
		
		
		saida+=salario.getCod();
		texto.setText(saida);
		
		JOptionPane.showMessageDialog(null,texto);
		
		
		
	}
}

classe de dados

/*
Crie um aplicativo para calculo de salario.Armazenar os dados de entrada em uma 
classe de dados. Calcular o salário liquido de 5 funcionários de acordo com
a seguinte tabela:

Dados de Entrada: Código do Funcionário, Horas Trabalhadas, Salário Hora e
Número de dependentes;

Dados de Saída: Salário Familia = Número de dependentes * R$10,12
		Salário Bruto   = Salário Hora * Horas Trabalhadas
		IRPF            = Salário Bruto * 15%
		INSS            = Salário Bruto * 12%
		Salário L¡quido = Salário Bruto + Salário Familia - IRPF - INSS
*/


public class Prog25
{
	private int N_DEP,HORAS_TRAB,COD,cont=0;
	private double SAL_HORA;
	String cod[] = new String[5];
	
	
	public void setDados(int nd,int ht,double sh,int cod)
	{
		   N_DEP=nd;
	       HORAS_TRAB=ht;
	       SAL_HORA=sh;	
	       COD=cod;
	}
	//*********************************
	public double getSalFamilia()
	{
		return N_DEP*10.12;
	}
	//**********************************
	public double getSalBruto()
	{
		return SAL_HORA*HORAS_TRAB;
	}
	//**********************************
	public double getIrpf()
	{
		return getSalBruto()*0.15;
	}
	//**********************************
	public double getInss()
	{
		return getSalBruto()*0.12;
	}
	//**********************************
	public  double getSalLiquido()
	{
		return getSalBruto()+getSalFamilia()-getInss()-getIrpf();
	}
	//**********************************
	
	public String getCod()
	{
		for(int i=0;i<5;i++)
		{
		
		  cod[i]="Codigo do funcionario "+COD;
		  cod[i]+="\nSálario bruto "+getSalBruto();
	      cod[i]+="\nSálario Familia "+getSalFamilia();  //aqui esta minha dúvida como eu faço para passar
		  cod[i]+="\nINSS "+getInss();                  //esses dados para a classe principal??????
	      cod[i]+="\nIRPF "+getIrpf();
		  cod[i]+="\nSalario liquido "+getSalLiquido();
		  
		  
		  
		 
		}
		
			return cod[cont];// aqui eu sei k eu posso escolher a posição do vetor a qual eu quero passar
			//mais como eu faço para passar todos os resutados, esse return so retorna uma posição??
			
		
		
	
	}
	
	
}

o resultado vai ser o seguinte


PROGRAMA 25
Codigo do funcionario 25
Sálario bruto 625.0
Sálario Familia 252.99999999999997
INSS 75.0
IRPF 93.75
Salario liquido 709.25

bem esse resultado é so do primeiro funcionário que está armarzenado na posição [0] do vetor pois não estou conseguindo retornar o resultado os outros funcionários como eu faço pra ler as 5 posiçoes…??? e retornar o valor…???

6 Respostas

F

Vc atribuiu a variável cont o valor 0 no início da classe Prog25, e no final mandou o método getCod retornar uma String, como a variável cod é um vetor de Strings e vc mandou retornar a posição zero desse vetor (que é um objeto String) não deu erro, mas só retornou a 1ª posição. Do jeito que está se vc mandar retornar o objeto cod sem um índice vai dar erro, pois ele é um vetor. Vc pode mudar a assinatura do método getCod para retornar um vetor de Strings:

public String[] getCod()

e retornar a variável cod sem passar um índice, daí vc precisará alterar um pouco o método que chama getCod, p/ que o resultado seja recebido em um vetor e que esse vetor seja percorrido p/ preencher a saida:

String[] cods = salario.getCod();

for(int i = 0; i < cods.length; i++)

saida += cods[i] + “\n;

texto.setText(saida);

Não posso testar agora mas acho que deve funcionar. Outra maneira seria vc continuar retornando uma String (não um vetor) e percorrer os funcionários em getCod preenchendo essa String com todos eles antes de retornar, ou vc usar Coleções e retornar uma lista de funcionários. Dê uma olhada no Javadoc de Collection.

Boa sorte!

E

cara tentei aki mais não deu certo mudei a assinatura igual vc falo mais naum deu certo

public String[] getCod() 
	{
		
		for(i=0;i<5;i++)
		{
		
		
		    cod[i]="Codigo do funcionario "+COD;
		    cod[i]+="\nSálario bruto "+getSalBruto();
	        cod[i]+="\nSálario Familia "+getSalFamilia();  //aqui esta minha dúvida como eu faço para passar
		    cod[i]+="\nINSS "+getInss();                  //esses dados para a classe principal??????
	        cod[i]+="\nIRPF "+getIrpf();
		    cod[i]+="\nSalario liquido "+getSalLiquido();
		    return cod[i];
		  
		}	
	
	}

tem uma maneira mais fácil de fazer vc falow em preencher String

me ajuda ai cara! desculpe minha burrice eu sou iniciante em programação.

F

O que acontece é que vc mudou a assinatura do método mas não mudou o que é retornado por ele. Vc continuou retornando uma posição do seu vetor:

return cod[i];

E essa posição do vetor nada mais é que uma String única e não um vetor como foi informado na assinatura, por isso deu erro. Vc deveria ter retornado o vetor inteiro:

return cod;

e ao recebê-lo na outra classe vc preenche a String com o conteúdo de cada posição do vetor, como eu coloquei antes:

String[] cods = salario.getCod(); for(int i = 0; i < cods.length; i++) saida += cods[i] + "\n"; texto.setText(saida);

ao invés de:

saida+=salario.getCod(); texto.setText(saida);

A outra solução que eu falei seria vc construir essa String com todos os funcionários dentro do método getCod (que talvez devesse se chamar getRelacaoFuncionarios) e retornar tudo já pronto, ou estudar a API Collection! :grin:

E

no valew cara entendi tudo…

A

poxa comessei a fazer informatica esse ano e os professores ja vieram com um exercicio que não sei fazer ele é o seguinte

desenvolva uma classe java com as seguintes caracteristicas
matricula
nome
salario

e os metodos publicos

calcInss()
calcIrrf()
calcPagto()

os metodos da classe deverão realizar as seguintes tarefas:

calcInss este metodo deve calcular e retornar o valor do desconto de Inss do funcionario, que sera de 10% sobre o salario do mesmo

calcIrrf —calcular o valor do imposto de renda retido em fonte que seguira as seguintes faixas salariais

salario abaixo de 1500,00 - IRRF=0"isento"
salario de 1500,00 até 3000,00 = 5% do salario
salario acima de 3000,00 - Irrf= 8% do salario

CalcPagto - calcular e retornar o valor a receber de um funcionario que sera igual ao salario menos o Inss e o irrf

depois tem q desenvolver uma aplicação java que utiliza a classe funcionario, criada no item 1, para obter os valores das propriedades da classe " matricula" “nome” e o “salario”, e utiliza os metodos para exibir o resultado dos calculos " INSS, IRRF, PAGTO"

A

quando vc fizer manda pro meu e-mail, [email removido] flws brother

Criado 15 de junho de 2006
Ultima resposta 25 de mar. de 2007
Respostas 6
Participantes 3