Problemas com um numero Double

4 respostas
N

Olá pessoal,
eu to fazendo um jogo da forca, e nesse programa eu tenho uma classe Ranking... Segue abaixo:

public class Ranking {
	
	private String nome;
	private int qtdJogadas;
	private int qtdAcertos;
	
	public Ranking(String nome) {
		this.nome = nome;
	}
	
	public void addJogada() {
		this.qtdJogadas++;
	}
	public void addAcerto() {
		this.qtdAcertos++;
	}
	public double mediaAcertos() {
		return qtdAcertos/qtdJogadas;
	}
	public String getNome() {
		return this.nome;
	}
	public int getJogadas() {
		return this.qtdJogadas;
	}
	public int getAcertos() {
		return this.qtdAcertos;
	}
}

Existe outra classe que utiliza o metodo mediaAcertos() e usa o bubblesort nas medias para ordenar e fazer um Ranking.
Só que esse metodo não retorna um numero decimal. Se por acaso for 1 acerto e 2 jogadas, era para retornar 0,5, ele retorna 0,0. Sempre retorna ou 0,0 ou 1,0.
O que eu faço??
abraço

4 Respostas

g4j

faz um casting na hora de retornar:

public double mediaAcertos() {  
         return ((double)qtdAcertos)/((double)qtdJogadas);  
     }

EDIT: Explicando: quando vc divide int / int o resultado é um int, por isso acontece o arredondamento

mateus_trasel

ou então só muda para um double ao invés de um inteiro.

g4j

Funciona mas não é elegante, pense que no mundo real o termo Jogada e Acerto não são valores quebrados portanto não faz sentido serem double. Retornar um valor quebrado é de responsabilidade do método mediaAcertos.

N

vlwww gente consegui resolver!
abraço

Criado 4 de setembro de 2008
Ultima resposta 6 de set. de 2008
Respostas 4
Participantes 3