Duvida com a divisão no java

4 respostas
ZeTripe

Bom estou assistindo várias video aulas e também lendo alguns livro para a linguagem java, e depois de ver algumas video aulas e ler alguns capitulos de livro resolvi então, fazer um exercício para ter certeza que apreendi algo e estou com uma dúvida em um aspecto simples.
Eu destaquei no código a parte que está me dando poblema.
o poblema que está dando é o seguinte, a variável totalOvosGranja recebe a quantidade de ovos botados pelos objetos galinha1 e galinha2(somados), e ai que aparece o poblema, declarei um método MediaOvosgranja() que retorna um double no caso eu coquei para retornar totalOvosGranja/2, agora se o totalOvosGranja for um número par
ele me devolve um resultado correto, mais se ele for impar por exemplo 3 , ele me devolve 1.0,sendo que 3/2 é igual a 1,5, se o totalOvosGranja for 5, ele me devolve 2.0, nessa sequencia, se alguem puder me ajudar ficaria muito grato :shock: ;

package MetodosVariaveisStatic;

import javax.swing.JOptionPane;

public class GalinhaMain {


	public static void main(String[] args) {
		
		
		Galinha galinha1 = new Galinha();
		Galinha galinha2 = new Galinha();
		int opcao=0; 
		
		do{
		
			opcao = Integer.parseInt(JOptionPane.showInputDialog("GRANJA OVOS BONS" + "\n" + "1- Ações da galinha" + "\n" + 
			"2- Ver Quantidade e média de ovos da galinha" + "\n" + "3- informações da granja" +"\n" + "0- sair"));
		
			switch (opcao) {
			
			case 0:
				opcao = 0;
				JOptionPane.showMessageDialog(null, "Sistema finalizado","Finalizado",JOptionPane.PLAIN_MESSAGE,null);			
				break;
			case 1:
				do{
					opcao = Integer.parseInt(JOptionPane.showInputDialog("1- Botar ovo com gainha 1" + "\n" + "2- botar ovo com galinha 2" 
					+ "\n" +"0- Sair"));
					
					switch (opcao) {
					case 0:
						opcao = 0;
						break;
					case 1:
						galinha1.BotarOvos();
						JOptionPane.showMessageDialog(null, "A Galinha 1 botou 1 ovo, ele foi adicionado a conta");
						break;
					
					case 2:
						galinha2.BotarOvos();
						JOptionPane.showMessageDialog(null, "A Galinha 2 botou 1 ovo, ele foi adicionado a conta");
						break;
					default:
						JOptionPane.showMessageDialog(null, "Digito inválido","inválido",JOptionPane.ERROR_MESSAGE,null);
						opcao = 1;
						break;
					}// final swt
				
					
				}while(opcao != 0);
					opcao = 1;			
				break; 
				
			case 2:
				JOptionPane.showMessageDialog(null, "Número de ovos botados pela 1º galinha:  " + galinha1.getOvosBotados() + "\n" + 
				"Arrecadamento da 1º galinha:  " + galinha1.ArrecadementoGalinha() + "\n" + "Número de ovos botados pela 2º galinha:  " + 
				galinha2.getOvosBotados() + "\n" + "Arrecadamento da 2º galinha:  " + galinha2.ArrecadementoGalinha() );
				
				// exibir o quanto cada galinha colocou de ovos, a quantidade total pertencente a granja, a média de ovos e o preço total dos ovos;
				break;
			case 3:
				JOptionPane.showMessageDialog(null, "Ovos na grajas: " + Galinha.getTotalOvosGranja() + "\n" + "Média dos ovos da granja: " +
				Galinha.MediaOvosgranja() + "\n" + "Valor obtido: " + Galinha.ArrecadamentoGraja());
				break;
			default:
				JOptionPane.showMessageDialog(null, "Digito inválido","invalido",JOptionPane.ERROR_MESSAGE,null);
				opcao = 0;
				break;
			}
			
			
		}while(opcao != 0);	
	
	}}

[size=18] AGORA A OUTRA CLASE[/size]

package MetodosVariaveisStatic;

import java.text.DecimalFormat;

public class Galinha {

	private int ovosBotados; // ovos colocados por cada galinha
	private double valorArrecadoGalinha; // valor em dinheiro do que a galinha rendeu;
	
	private static double arrecadamentoGranja; // quanto a granja faturo em dinheiro, variavel pertencente a classe galinha e não ao objeto
	private static int totalOvosGranja = 0;
	
	public static final double PRECO_DO_OVO = 0.20;// constante global da classe, pode ser vista por todo o projeto 
	
	
	
	public Galinha(){
		this(0,0,0);
	}

	
	//Construtor
	public Galinha(int ovosBotados, float mediaOvosGalinha,double valorArrecadoGalinha) {
		this.ovosBotados = ovosBotados;
		this.valorArrecadoGalinha = valorArrecadoGalinha;
	}


	// getters e setters obejeto
	public int getOvosBotados() {
		return ovosBotados;
	}

	
	public void setOvosBotados(int ovosBotados) {
		this.ovosBotados = ovosBotados;
	}


	public double getValorArrecadoGalinha() {
		return valorArrecadoGalinha;
	}


	public void setValorArrecadoGalinha(double valorArrecadoGalinha) {
		this.valorArrecadoGalinha = valorArrecadoGalinha;
	}

	
	//getters e setters da classe


	public static double getArrecadamentoGranja() {
		return arrecadamentoGranja;
	}


	public static void setArrecadamentoGranja(double arrecadamentoGranja) {
		Galinha.arrecadamentoGranja = arrecadamentoGranja;
	}


	public static int getTotalOvosGranja() {
		return totalOvosGranja;
	}


	public static void setTotalOvosGranja(int totalOvosGranja) {
		Galinha.totalOvosGranja = totalOvosGranja;
	}
	
	
	
	// metodo auxiliar - segundario/indireto
	private static final String FormatacaoValor(double valor){ // formatação de valor, não pode ser subscrito
		DecimalFormat df = new DecimalFormat();
		df.applyPattern("#0.00");
	
		return df.format(valor);
	}

	//métodos objeto
	
	public void BotarOvos(){
		ovosBotados++; // acrecentando um ovo botado aoobjeto galinha
		totalOvosGranja++; //acrecentando o avo ao total de ovos da granja		
	}
	
	public String ArrecadementoGalinha(){ // retorna uma string com o valor arrecadado pela galinha
		
		valorArrecadoGalinha = ovosBotados*PRECO_DO_OVO;		
		return "R$ " + FormatacaoValor(valorArrecadoGalinha);
		
		
	}
	
	
	//métodos da classe
	
	public static double MediaOvosgranja(){ //media de ovos que tem na granja
		return totalOvosGranja/2;
	}

	public static String ArrecadamentoGraja(){
		
		arrecadamentoGranja = totalOvosGranja*PRECO_DO_OVO;
		return "R$ " + FormatacaoValor(arrecadamentoGranja);
		
	}

4 Respostas

ErickRAR

Se você dividir um int por outro, o resultado será int. Por isso o erro. Coloque um "d" depois do 2.

public static double MediaOvosgranja(){ //media de ovos que tem na granja 
 return totalOvosGranja/2d; 
 }

Ps: utilize a tag [code] para colocar seu código. Fica melhor para ler.

ZeTripe

ErickRAR

Muito obrigado por me ajudar! sou novo no grupo intão não sabia disso
mais obrigado mesmo pela ajuda, me ajudou muito.

ErickRAR

De boa. 8)

ViniGodoy

Outra possibilidade, além do d, é usar .0 após o número:

public static double MediaOvosgranja(){ //media de ovos que tem na granja return totalOvosGranja / 2.0; }

Criado 23 de junho de 2012
Ultima resposta 23 de jun. de 2012
Respostas 4
Participantes 3