Urgente!, problemas com herança e packages

3 respostas
T

e ae , sou novo no forum, apesar de sapear aki ja há um bom tempo

to com um problemão, um trabalho da facul simulando uma corrida entre uma tartaruga e uma lebre usando matriz e herança de classes, fiz uma classe main, uma classe corredor uma classe lebre e uma tartaruga, a classe corredor compilou blza, já as outras não compila

classe corredor
package jogos.corrida;

public abstract class Corredor {

public abstract void run();

public abstract int getPosicao();

public abstract String getState();

public abstract String getNome();

public String toString() {

String ret = getNome();

ret += [;

ret += getPosicao();

ret += ,;

ret += getState();

ret += ];
return ret;
}

}

as outras classes não estão acessando essa, na hora de compilar da este erro:

cannot resolve symbol
public class Lebre extends Corredor {
sumbol: class Corredor
location: class jogos.corrida.Lebre

Se alguem souber e puder dar uma força, tenho que entregar essa zica amnhã quarta feira

vlw

3 Respostas

E

eae blz?

cara pergunta bem boba

essas classes ficam no mesmo pacote que essa sua classe abstrata?

caso não fique, vc está indicando o import do pacote onde está essa classe abstrata? ( import jogos.corrida.*; ) :roll:

caso as opções de cima estejam certas, ele consegue implementar
os métodos que vc definiu na sua classe abstrata? :???:

ps.: muito estranho isso… 8O

[]´s

M

sua classe jogos.corrida.Corredor não esta no classpath qnd vai compilar a classe Lebre, esse tipo de erro é difícil de ocorrer qnd vc esta usando uma IDE q ja gerencia isso mais facilmente pra vc, ou, se tiver fazendo td em console, compile com

javac -classpath "caminho/onde/esta/a/classe/Corredor" -d . Lebre.java
T

vlws kras, deixa eu complementar minha dúvida

-eu to usando o Gel, já configurado as SDKs
-as classes estão todas em jogos/corrida, como tem que ser por estar usando como package, ou não???

  • aqui segue todas as classes e métodos

//classe Corrida.java(super classe)

package jogos.corrida;

import java.awt.;
import javax.swing.
;

public class Corrida {

private JTextField Tartaruga = new JTextField();

private JTextField Lebre = new JTextField();
public Corrida() {
	JFrame frame = new JFrame("Corrida");

	GridLayout grid = new GridLayout(4,2);
	JPanel panel = new JPanel();
	panel.setLayout(grid);
	panel.add(new JLabel("Apaga-se a luz vermelha..."));
	panel.add(new JLabel());

	panel.add(new JLabel("Começa o Grande Prêmio do meio do mato!"));
	panel.add(new JLabel());

	panel.add(new JLabel("Tartaruga"));
	panel.add(Tartaruga);

	panel.add(new JLabel("Lebre"));
	panel.add(Lebre);

	Tartaruga.setPreferredSize(new Dimension(400, 20));
	Lebre.setPreferredSize(new Dimension(400, 20));

	Dimension ssize = Toolkit.getDefaultToolkit().getScreenSize();
	frame.getContentPane().add(panel, BorderLayout.CENTER);
	frame.setSize((int) ssize.getWidth(), 150);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
}

public void run() throws InterruptedException {
	Lebre lebre = new Lebre();
	Tartaruga tartaruga = new Tartaruga();

	while (true) {
		tartaruga.run();
		lebre.run();

		if (terminou(tartaruga)) {
			Tartaruga.setText("Tartaruga ganhou!");
			break;
		} else {
			Tartaruga.setText(print(tartaruga));
		}

		if (terminou(lebre)) {
			Tartaruga.setText("Lebre ganhou!");
			break;
		} else {
			Lebre.setText(print(lebre));
		}
		Thread.sleep(1000);
	}
}

public boolean terminou(Corredor (corredor)) {
	return corredor.getPosicao() >= 70;
}

public static void main(String[] args) throws Exception {
	Corrida corrida = new Corrida();
	corrida.run();
}

public static String print(Corredor corredor) {
	String ret = "";
	for (int i = 0; i < corredor.getPosicao() - 1; i++) {
		ret += ' ';
	}
	ret += corredor;
	return ret;
}

}

classe Corredor.java(a única que ta compilando certinho

package jogos.corrida;

public abstract class Corredor {

public abstract void run();

public abstract int getPosicao();

public abstract String getState();

public abstract String getNome();

public String toString() {

String ret = getNome();

ret += [;

ret += getPosicao();

ret += ,;

ret += getState();

ret += ];
return ret;
}

}

classe Lebre.java
package jogos.corrida;

public class Lebre extends Corredor {

private int posicao = 1;

private String state;
public void run() {
	int num = (int) (Math.random() * 9) + 1;
	if (num <= 2) {
		state = "zzZZzz";
	}

	if (num > 2 && num <= 4) {
		state = "Salto grande";
		posicao += 9;
	}
	if (num > 4 && num <= 5) {
		state = "Escorregão grande";
		posicao -= 12;
	}
	if (num > 5 && num <= 8) {
		state = "Salto pequeno";
		posicao += 1;
	}
	if (num > 8) {
		state = "Escorregão pequeno";
		posicao -= 2;
	}
}

public int getPosicao() {
	if (posicao < 0) {
		posicao = 1;
	}
	return posicao;
}

public String getState() {
	return state;
}

public String getNome() {
	return "Lebre";
}

}

classe Tartaruga.java

package jogos.corrida;

public class Tartaruga extends Corredor {

private int posicao = 1;

private String state = “”;
public void run() {
	int num = (int) (Math.random() * 9) + 1;
	if (num <= 5) {
		state = "Salto grande";
		posicao += 3;
	}
	if (num > 5 && num <= 7 ) {
		state = "Caminhada lenta";
		posicao += 1;
	}
	if (num > 7) {
		state = "Escorregão";
		posicao -= 6;
	}
}

public int getPosicao() {
	if (posicao < 0) {
		posicao = 1;
	}
	return posicao;
}

public String getState() {
	return state;
}

public String getNome() {
	return "Tartaruga";
}

}

as classes tartaruga e lebre tem que acessar a classe corredor que acessa a classe corrida.
caso não encontre essa solução teria uma forma mais fácil de fazer esse código em console, tipo usando uma classe só e métodos?

Criado 24 de maio de 2005
Ultima resposta 24 de mai. de 2005
Respostas 3
Participantes 3