Luthien 0 Denunciar post Postado Outubro 12, 2014 Fiz a classe Empregado: package exercicio_07; public class Empregado { String nome, sobrenome, cargo; double salario; public Empregado(String nome, String sobrenome, String cargo, double salario){ setNome(nome); setSobrenome(sobrenome); setCargo(cargo); setSalario(salario); } public void setNome(String nome){ this.nome = nome; } public String getNome(){ return nome; } public void setSobrenome(String sobrenome){ this.sobrenome = sobrenome; } public String getSobrenome(){ return sobrenome; } public void setCargo(String cargo){ this.cargo = cargo; } public String getCargo(){ return cargo; } public void setSalario(double salario){ this.salario = salario; } public double getSalario(){ return salario; } } e EmpregadoTeste: package exercicio_07; import java.util.Scanner; public class EmpregadoTeste { static Scanner in; public static void main(String args[]){ in = new Scanner(System.in); int qtd; System.out.println("Informe a quantidade de empregados que deseja cadastrar"); qtd= in.nextInt(); for(int i = 1; i <= qtd; i++){ Empregado empregado = cadastraEmpregado(); if(i == qtd) exibeEmpregado(empregado); } } public static Empregado cadastraEmpregado(){ in.nextLine(); System.out.println("Informe o nome do empregado"); String nome = in.nextLine(); System.out.println("Informe o sobrenome do empregado"); String sobrenome = in.nextLine(); System.out.println("Informe o cargo do empregado"); String cargo = in.nextLine(); System.out.println("Informe o salario mensal do empregado"); double salario = in.nextDouble(); Empregado e = new Empregado(nome,sobrenome,cargo,salario); return e; } public static void exibeEmpregado(Empregado e){ System.out.printf("Nome: %s\nSobrenome: %s\nCargo: %s\nSalário: %lf",e.nome,e.sobrenome,e.cargo,e.salario); } } Quando vou executar, da erro na hora de imprimir os dados dos empregados: Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'l' at java.util.Formatter$FormatSpecifier.conversion(Unknown Source) at java.util.Formatter$FormatSpecifier.<init>(Unknown Source) at java.util.Formatter.parse(Unknown Source) at java.util.Formatter.format(Unknown Source) at java.io.PrintStream.format(Unknown Source) at java.io.PrintStream.printf(Unknown Source) at exercicio_07.EmpregadoTeste.exibeEmpregado(EmpregadoTeste.java:43) at exercicio_07.EmpregadoTeste.main(EmpregadoTeste.java:18) Compartilhar este post Link para o post Compartilhar em outros sites
Luthien 0 Denunciar post Postado Outubro 12, 2014 aah consertei mas agr ta com um erro diferente, dei uma estudada e mudei o EmpregadoTeste: package exercicio_07; import java.util.Scanner; public class EmpregadoTeste { static Scanner in; public static void main(String args[]){ in = new Scanner(System.in); int qtd; System.out.println("Informe a quantidade de empregados que deseja cadastrar"); qtd= in.nextInt(); for(int i = 1; i <= qtd; i++){ Empregado empregado = cadastraEmpregado(); } for(int i = 1; i < qtd; i++){ exibeEmpregados(empregado);// aqui da erro : empregado cannot be resolved to a variable } } public static Empregado cadastraEmpregado(){ Empregado e = new Empregado(); in.nextLine(); System.out.println("Informe o nome do empregado"); e.setNome(in.nextLine()); System.out.println("Informe o sobrenome do empregado"); e.setSobrenome(in.nextLine()); System.out.println("Informe o cargo do empregado"); e.setCargo(in.nextLine()); System.out.println("Informe o salario mensal do empregado"); e.setSalario(in.nextDouble()); return e; } public static void exibeEmpregado(Empregado e){ System.out.println("Nome: "+e.getNome()+"\nSobrenome: "+e.getSobrenome()+"\nCargo: "+e.getCargo()+"\nSalário:"+e.getSalario()); } } Erro na linha 19. Pq da esse erro?? Compartilhar este post Link para o post Compartilhar em outros sites
reebr 94 Denunciar post Postado Outubro 13, 2014 Você está criando uma variável dentro de um loop, ela será "visível" somente ali. // esse loop cria um novo empregado for(int i = 1; i <= qtd; i++){ Empregado empregado = cadastraEmpregado(); // variável empregado é visível para esse loop } for(int i = 1; i < qtd; i++){ exibeEmpregado(empregado); // esse loop não enxerga a variável empregado. } Você pode arrumar assim: Empregado empregado = null; // fora dos loops for(int i = 1; i <= qtd; i++) empregado = cadastraEmpregado(); // enxerga empregado for(int i = 1; i < qtd; i++) exibeEmpregado(empregado); // enxerga empregado Mas creio que o output não será o esperado. Você vai ler 'n' empregados, mas só será exibido o último. Isso acontece porque você está usando a mesma variável para criar um novo empregado. Se quiser exibir todos os empregados você irá precisar criar um vetor. obs: Ainda na linha 19, o nome do seu método é "exibeEmpregado" e não "exibeEmpregados". Compartilhar este post Link para o post Compartilhar em outros sites
Luthien 0 Denunciar post Postado Outubro 15, 2014 aaah muito obrigada! tive q mudar mt coisa mas consegui shashauhs public class EmpregadoTeste { static Scanner in; public static void main(String args[]){ in = new Scanner(System.in); int qtd; Empregado empregado[]; System.out.println("Informe a quantidade de empregados que deseja cadastrar"); qtd= in.nextInt(); empregado = new Empregado[qtd]; for(int i = 0; i < qtd; i++){ empregado[i] = new Empregado(); in.nextLine(); System.out.println("Informe o nome do empregado"); empregado[i].setNome(in.nextLine()); System.out.println("Informe o sobrenome do empregado"); empregado[i].setSobrenome(in.nextLine()); System.out.println("Informe o cargo do empregado"); empregado[i].setCargo(in.nextLine()); System.out.println("Informe o salario mensal do empregado"); empregado[i].setSalario(in.nextDouble()); } for(int i = 0; i < qtd; i++){ System.out.println("Nome: "+empregado[i].getNome()+"\nSobrenome: "+empregado[i].getSobrenome()+ "\nCargo: "+empregado[i].getCargo()+"\nSalário:"+empregado[i].getSalario()+"\n"); } } } Compartilhar este post Link para o post Compartilhar em outros sites