grs666 0 Denunciar post Postado Março 3, 2010 Olá pessoal, estou como um problema... Tenho que imprimir o Nome do funcionario, numero de horas que ele trabalhou, valor da hora trabalhada, salario incial e auxilio alimentação... ele só imprime o nome e o numero de horas... o restante da 0. help pliz. (: valeu! package ExercicioSala; import java.util.Scanner; public class Funcionarios{ String nome; int horast; String turno; String cate; int valorh; int salarioi; int auxilio; public void Ler(){ System.out.println("Nome do Funcionário: "); nome=new Scanner(System.in).next(); System.out.println("Horas que o funcionario trabalha por mês: "); horast=new Scanner(System.in).nextInt(); System.out.println("Turno do funcionario: "); turno=new Scanner(System.in).next(); System.out.println("Categoria do funcionario: "); cate=new Scanner(System.in).next(); } public void Calculo(){ if(cate.equals("g") && turno.equals("n")) valorh=510*(18/100); if(cate.equals("g") && turno.equals("m") || turno.equals("v")) valorh=510*(15/100); if(cate.equals("o") && turno.equals("n")) valorh=510*(13/100); if(cate.equals("o") && turno.equals("m") || turno.equals("v")) valorh=510*(10/100); } public void AuxilioALimentar(){ salarioi=valorh*horast; if(salarioi<=350) auxilio=salarioi*(20/100); if(salarioi>350 && salarioi<700) auxilio=salarioi*(15/100); if(salarioi>=700) auxilio=salarioi*(5/100); } public void Imprimir(){ System.out.println("NOME DO FUNCIONARIO: "+nome); System.out.println("NUMERO DE HORAS TRABALHADAS: "+horast); System.out.println("VALOR DA HORA: "+valorh); System.out.println("SALARIO INICIAL: "+salarioi); System.out.println("AUXILIO ALIMENTAÇÃO: "+auxilio); } } MAIN package ExercicioSala; public class Empresa { public static void main(String[]args){ Funcionarios f1=new Funcionarios(); f1.Ler(); f1.Calculo(); f1.AuxilioALimentar(); f1.Imprimir(); } } ae galera conssegui mostar os valores aqui, mudei eles para Float e faltava colocar o "f" na frente dos valores. Agora é que são élas... O valor da hora acho que esta certo, agora o SALARIO INICIAL e o AUXILIO ALIMENTAÇÃO estao errados, o valor do resultado é grande para um salario hehe... (estou usando o primeiro exemplo Turno=n e Categoria=g) acho que é o calculo... se alguem puder me ajudar nessa parte do calculo eu agradeço (: vlw Bom galera o negócio é o seguinte, acho que muita gente não intendeu o que quero fazer... vou postar aqui para ficar mais facil: Uma empresa possui 20 funcionários, sobre quais as seguintes informações:nome número de horas trabalhadas no mês, turno (m=matutino n=noturno...), categoria (o=operário, g=gerente) e valor da hora trabalhada.Faça um programa que leia as informações acima, não permitindo turno e categoria inexistentes.O programa deve calcular o valor da hora trabalhada da seguinte forma: Categoria____Turno____Valor da Hora Gerente______Noturno___18% Gerente______M ou V____15% Operário_____Noturno___13% Operário_____M ou V____10% O programa deve calcular o salário inicial, com base no valor da hora e o numero de horas trabalhadas.Todos recebem um auxilio alimentação, de acordo com seu salário inicial: Salário inicial_________Auxilio Alimentação <=350___________________20% >350 e <700_____________15% >=700___________________5% O programa deve mostrar nome, numero de horas trabalhadas, valor da hora, salário inicial, auxilio alimentação e salário final (inicial +alimentação) de todos os funcionários. Ele deverá apresentar o seguinte menu: 1-Cadastrar funcionário 2-Mostrar folha pagamento 3-sair vou postar o que conssegui fazer, o programa armazena só o ultimo funcionario digitado e mostra só o ultimo tambem estou com duvida onde colocar o for... valeu, é isso ai... import java.util.Scanner; public class Funcionarios{ String nome; int horast; String turno; String cate; float valorh; float salarioi; float auxilio; float salariof; public void Ler(){ System.out.println("Nome do Funcionário: "); nome=new Scanner(System.in).next(); System.out.println("Horas que o funcionario trabalha por mês: "); horast=new Scanner(System.in).nextInt(); System.out.println("Turno (m)-matutino (v)-vespertino (n)-noturno: "); turno=new Scanner(System.in).next(); if(turno.equals("m") || turno.equals("v") || turno.equals("n")) { System.out.println("Categoria (g)-gerente (o)-operario: "); cate=new Scanner(System.in).next(); if(cate.equals("g") || cate.equals("o")) System.out.println(""); else System.out.println("categoria não válido!"); } else System.out.println("Turno não válido!"); } public void Calculo(){ if(cate.equals("g") && turno.equals("n")) valorh=510f*(18/100f); if(cate.equals("g") && turno.equals("m") || turno.equals("v")) valorh=510f*(15/100f); if(cate.equals("o") && turno.equals("n")) valorh=510f*(13/100f); if(cate.equals("o") && turno.equals("m") || turno.equals("v")) valorh=510f*(10/100f); } public void AuxilioALimentar(){ salarioi=valorh*horast; if(salarioi<=350f) auxilio=salarioi*(20/100f); if(salarioi>350f && salarioi<700f) auxilio=salarioi*(15/100f); if(salarioi>=700f) auxilio=salarioi*(5/100f); salariof=salarioi+auxilio; } public void Imprimir(){ System.out.println("NOME DO FUNCIONARIO: "+nome); System.out.println("NUMERO DE HORAS TRABALHADAS: "+horast); System.out.println("VALOR DA HORA: "+valorh); System.out.println("SALARIO INICIAL: "+salarioi); System.out.println("AUXILIO ALIMENTAÇÃO: "+auxilio); System.out.println("SALARIO FINAL: "+salariof); } } MAIN import java.util.Scanner; public class Empresa { public static void main(String[]args){ Funcionarios f1=new Funcionarios(); int op=0; for(int i=0;i<20;i++){ if(op==1) { f1.Ler(); f1.Calculo(); f1.AuxilioALimentar(); } System.out.println("\nDigite:\n1.Cadastrar\n2.Mostrar Folha de Pagamento\n3.Sair"); op=new Scanner(System.in).nextInt(); if(op==2) f1.Imprimir(); if(op==3){ System.out.println("Voce saiu do programa!"); break; } } } } Quem puder ajudar... (: Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 5, 2010 Sugestão: ao invés de instanciar duzentos Scanner, crie só um objeto e faça as leituras. public void Ler(){ Scanner cin = new Scanner(System.in); System.out.println("Nome do Funcionário: "); nome=cin.next(); System.out.println("Horas que o funcionario trabalha por mês: "); horast=cin.nextInt(); System.out.println("Turno (m)-matutino (v)-vespertino (n)-noturno: "); turno=cin.next(); if(turno.equals("m") || turno.equals("v") || turno.equals("n")) { System.out.println("Categoria (g)-gerente (o)-operario: "); cate=cin.next(); if(cate.equals("g") || cate.equals("o")) System.out.println(""); else System.out.println("categoria não válido!"); } else System.out.println("Turno não válido!"); } Seu programa só armazena o último funcionário porque você está usando apenas uma referẽncia, e não um array de referências... Compartilhar este post Link para o post Compartilhar em outros sites