Problemas ( talvez com a sobreposição do método toString)

2 respostas
jcvijr

Olá pessoal.

Recebi um exercício do professor, e o único objetivo é fazer compilar o código abaixo:

public class Teste1 {

	public static void main ( String args [ ] )
	{
		try 
		{
			Date birth = new Date(24,7,1949) ;
			Date hire = new Date(12,3,1988) ;
			Employee employee = new Employee("Bob", "Blue", birth, hire);
		}
		catch (WrongDateValuesException e ) 
		{
			System.out.println(e);
		}
		System.out.println(employee);
	} 
}

Gerei as seguintes classes para tentar resolver o problema:

public class Date {

	public int day;
	public int month;
	public int year;
	
	public Date(int day, int month, int year) throws WrongDateValuesException

	{
		if( day >= 1 && day <= 31 && month >= 1 && month <= 31)
		{
			throw new WrongDateValuesException();
		}
		else
		{
			this.day = day;
			this.month = month;
			this.year = year;
		}
	}
	
	public String toString()
	{
		return ("Eu sou uma data!");
	}

}

public class Employee {
	
	public String name;
	public String color;
	public Date birth;
	public Date hire;
	
	public Employee(String name,String color,Date birth,Date hire)
	{
		this.name = name;
		this.color = color;
		this.birth = birth;
		this.hire = hire;
	}
	
	public String toString()
	{
		return("Eu sou um empregado!");
	}

}

public class WrongDateValuesException extends Exception
{
	
}

Estou usando o Eclipse, cada classe está em um arquivo, tudo mais.
Porém acontece o seguinte: na linha System.out.println(employee);
ocorre o seguinte erro: “employee cannot be resolved”

Alguém poderia me ajudar a detectar os problemas?
Agradeço se puderem ajudar. :slight_smile:

2 Respostas

T

jcvijr:
Olá pessoal.

Recebi um exercício do professor, e o único objetivo é fazer compilar o código abaixo:

public class Teste1 {

	public static void main ( String args [ ] )
	{
		try 
		{
			Date birth = new Date(24,7,1949) ;
			Date hire = new Date(12,3,1988) ;
			Employee employee = new Employee("Bob", "Blue", birth, hire);
		}
		catch (WrongDateValuesException e ) 
		{
			System.out.println(e);
		}
		System.out.println(employee);
	} 
}


No seu caso você está com um problema de escopo. Para facilitar a sua vida, é só lembrar que o que é declarado dentro de uma chave “{”, “morre” depois da chave “}”. Então você não consegue acessar a variável “employee” porque ela “morreu” (saiu do escopo) naquela chave “}” antes do Catch.
Para consertar esse problema, mova a declaração de lugar, ou então o System.out.println de lugar.

jcvijr

Obrigado, resolveu meu problema.

Criado 31 de maio de 2005
Ultima resposta 31 de mai. de 2005
Respostas 2
Participantes 2