Galera,
to com um probleminha…
Tenho uma classe Dado, uma Jogador, e um Main
no main coloquei assim
Jogador1.Jogadado();
jogador1 = objeto da classe jogador
e jogadado = método classe dade…
mas o eclipse acusa erro, o que ser?
Galera,
to com um probleminha…
Tenho uma classe Dado, uma Jogador, e um Main
no main coloquei assim
Jogador1.Jogadado();
jogador1 = objeto da classe jogador
e jogadado = método classe dade…
mas o eclipse acusa erro, o que ser?
[quote=.com]Galera,
to com um probleminha…
Tenho uma classe Dado, uma Jogador, e um Main
no main coloquei assim
Jogador1.Jogadado();
jogador1 = objeto da classe jogador
e jogadado = método classe dade…
mas o eclipse acusa erro, o que ser?[/quote]
Onde se encontra o método jogadado(); ? Qual erro o eclipse apresenta?
public class Dado {
private int quantidadeLados;
private String cor;
public Dado(int qntLados, String cor){
this.quantidadeLados = qntLados;
this.cor = cor;
}
public int getQuantidadeLados(){
return this.quantidadeLados;
}
public String getCor(){
return this.cor;
}
public void setQuantidadeLados(int qntLados){
this.quantidadeLados = qntLados;
}
public void setCor(String cor){
this.cor = cor;
}
//Método para jogar o dado retorna o valor da jogada
public int jogaDado(){
return (int) (Math.random() * quantidadeLados + 1);
}
}
Teclado t = new Teclado();
String jogador1 = t.leString("Informe o nome do Jogador 1: ");
String jogador2 = t.leString("Informe o nome do Jogador 2: ");
//Criando os jogadores
Jogador a = new Jogador(jogador1, 0, dadoBranco, dadoVermelho);
Jogador b = new Jogador(jogador2, 0, dadoBranco, dadoVermelho);
a.JogaDados();
Hum... legal. esse método (jogaDados) existe dentro da classe Jogador? O que tem dentro deste método? Ele é publico, private, protected?Na Classe Mainpublic class Dado { private int quantidadeLados; private String cor; public Dado(int qntLados, String cor){ this.quantidadeLados = qntLados; this.cor = cor; } public int getQuantidadeLados(){ return this.quantidadeLados; } public String getCor(){ return this.cor; } public void setQuantidadeLados(int qntLados){ this.quantidadeLados = qntLados; } public void setCor(String cor){ this.cor = cor; } //Método para jogar o dado retorna o valor da jogada public int jogaDado(){ return (int) (Math.random() * quantidadeLados + 1); } }Teclado t = new Teclado(); String jogador1 = t.leString("Informe o nome do Jogador 1: "); String jogador2 = t.leString("Informe o nome do Jogador 2: "); //Criando os jogadores Jogador a = new Jogador(jogador1, 0, dadoBranco, dadoVermelho); Jogador b = new Jogador(jogador2, 0, dadoBranco, dadoVermelho); a.JogaDados();
O jogadados é public
mas ele tá na classe dado.
Qual o erro que o eclipse acusa??
Põe a classe jogador ai tambem para analisarmos.
^^
[quote=.com]O jogadados é public
mas ele tá na classe dado.[/quote]
então vc está chamando um metodo de um objeto Dado atravéz de um objeto jogador…
Acho q seria isso:
a.dadoBranco.JogaDados();
a.dadoVermelho.JogaDados();
como disse o amigo acima, vc deve colocar a sua classe jogador para podermos visualizar o seu problema.
[/code]A classe jogar
[code]
public class Jogador {
//atributos da classe
private String nome;
private int qntPontos;
private Dado dado;
private Dado dado2;
//Construtor, inicializar os atributos
public Jogador(String nome, int qntPontos, Dado dado, Dado dado2){
this.nome = nome;
this.qntPontos = 0;
this.dado = dado;
this.dado2 = dado2;
}
}
Tentei o
a.dadoBranco.JogaDados();
a.dadoVermelho.JogaDados();
mas no eclipse diz "Syntax error on token "jogaDado", identifier expected after this tokenn
ai aii aii
Esse erro aparece quando o eclipse não concegue reconhecer o token (nesse caso o nome do método digitado). Teoricamente isso é algum erro de digitação ou a opção q te disse acima. Eu compilei aqui e modifiquei um pouquinho (sem tirar seu mérito). :D
veja:
public class Jogador {
//atributos da classe
private String nome;
private int qntPontos;
private Dado dado;
private Dado dado2;
//Construtor, inicializar os atributos
public Jogador(String nome, int qntPontos, Dado dado, Dado dado2){
this.nome = nome;
this.qntPontos = 0;
this.dado = dado;
this.dado2 = dado2;
}
public void jogaDados(){//esse aqui.
int n=dado.jogaDado();
int n2=dado2.jogaDado();
System.out.println("dado "+dado.getCor()+": "+n);
System.out.println("dado "+dado2.getCor()+": "+n2);
}
}
public class Dado {
private int quantidadeLados;
private String cor;
public Dado(int qntLados, String cor){
this.quantidadeLados = qntLados;
this.cor = cor;
}
public int getQuantidadeLados(){
return this.quantidadeLados;
}
public String getCor(){
return this.cor;
}
public void setQuantidadeLados(int qntLados){
this.quantidadeLados = qntLados;
}
public void setCor(String cor){
this.cor = cor;
}
//Método para jogar o dado retorna o valor da jogada
public int jogaDado(){
return (int) (Math.random() * quantidadeLados + 1);
}
}
e criei uma classe main separada (fica mais bonito e limpo).
public class Main {
public static void main(String[] args) {
String jogador1 = "walisson";
String jogador2 = "outraPessoa";
Dado dadoBranco = new Dado(6,"branco");
Dado dadoVermelho = new Dado(6,"vermelho");
//Criando os jogadores
Jogador a = new Jogador(jogador1, 0, dadoBranco, dadoVermelho);
Jogador b = new Jogador(jogador2, 0, dadoBranco, dadoVermelho);
a.jogaDados();
b.jogaDados();
}
}
Ein me responda uma coisa: Isso é pra que mesmo? 8)
bah cara funcionou mesmo…
valeu , só não entendi mto bem o pq ter um jogaDados na classe jogador,
entendi o que o método faz e tudo mais… mas pq não pode acessar o jogaDado da classe Dado
desde já, valeuuu!
[quote=.com]bah cara funcionou mesmo…
valeu , só não entendi mto bem o pq ter um jogaDados na classe jogador,
entendi o que o método faz e tudo mais… mas pq não pode acessar o jogaDado da classe Dado
desde já, valeuuu![/quote]
Vamos recapitular. A sua classe Jogador (antiga) não possui o método jogaDados();. Ela possui dois objetos Dados. O método jogaDados() está declarado na classe Dado, logo vc não pode chamar este método a partir de um objeto Jogador, como vc tinha feito acima -> a.JogaDados();
A maneira que te falei também não funcionaria pq os dois objetos Dados na classe jogador são privados, não podendo acessar a partir de outra classe. -> a.dado.jogaDados().
Outra maneira de fazer isso funcionar seria vc criar os métodos getDado() e getDado2(). Assim vc poderia chamar os métodos referentes aos dados.
-> a.getDado().jogaDados();
-> a.getDado2().jogaDado();