Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Luthien

Erro na hora de imprimir, classes, instancias, metodos

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.