• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ex-dead

erro put hashtable

3 mensagens neste tópico

boas!

a minha duvida tem haver com as duas classes abaixo:

public class Dinheiro
{
private double valor = 0.0;
private int qtd = 0;

public Dinheiro(double valor, int qtd)
{
	this.valor = valor;
}

        public double getValor()
{
	return this.valor;
}

public int getQtd()
{
	return this.qtd;
}

public void adicionaQtd(int qtd)
{
	this.qtd += qtd;
}

public double getTotal()
{
	return getValor() * getQtd();
}
}

import java.util.*;

public class CaixaRegistadora
{
Hashtable<String, Dinheiro> caixa = new Hashtable<String, Dinheiro>();

public double getTotalCaixa()
{
            Enumeration e = caixa.elements();
            
	double total = 0.0;


	for(; e.hasMoreElements(); )
	{
		total += ((Dinheiro)e.nextElement()).getTotal();
	}
}

       
public void retiraMoedas(double tipoMoeda, int qtd)
{
	if(caixa.containsValue(tipoMoeda))
	{
		((Dinheiro)caixa.get(tipoMoeda)).adicionaQtd(-1*qtd);
	}
	else
	{
		System.out.println("Valor Inválido");
	}
}

public void depositaMoedas(double tipoMoeda, int qtd)
{
	if(caixa.containsValue(tipoMoeda))
	{
		caixa.get(tipoMoeda).adicionaQtd(qtd);
	}
	else
	{
		caixa.put(new Dinheiro(tipoMoeda,qtd));
	}
}

public void depositaNotas(double tipoNota, int qtd)
{
	if(caixa.containsValue(tipoNota))
	{
		caixa.get(tipoNota).adicionaQtd(qtd);
	}
	else
	{
		caixa.put(new Dinheiro(tipoNota, qtd));
	}
}

public void retiraNotas(double tipoNota, int qtd)
{
	if(caixa.containsValue(tipoNota))
	{
		caixa.get(tipoNota).removeNotas(qtd);
	}
	else
	{
		System.out.println("Valor Inválido");
	}
}
}

Quando compilo a classe CaixaRegistadora aparecem-me erros em ambos os put's dos métodos depositaMoedas e depositaNotas.

o erro que aparece é: 

"cannot find symbol.

symbol:method put(Dinheiro)

location:class java.util.hashtable <java.lang.String,Dinheiro>"

Não estou a perceber o porquê deste erro.. a não ser que eu tenho criado algo mal nas classes  :D

Obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tens duas soluções:

1) Em vez de usares Hashtable, usas List (ArrayList) e a sintaxe que tens passa a estar correcta

ou

2) Usas Hashtable, mas o primeiro argumento é a chave. A chave deve ser neste caso o valor da moeda/nota.

Mas eu ia pela opção 1 porque é a que faz mais sentido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora