[Ajuda] Erro com collections!

2 respostas
G

Esse é o erro:
Exception in thread “main” java.lang.Error: Unresolved compilation problems:
The constructor CarrodaRevenda(String, String, String) is undefined
Keyboard cannot be resolved

at Principal.DemoEstoqueDaRevenda.main(DemoEstoqueDaRevenda.java:10)

Classes:

package Principal;

public class CarrodaRevenda {

// ano de fabricação, ano do modelo, modelo, marca, preço, 


private String modelo,marca,versão;
private String codigo;
private short estoque;
private float pVenda;

/**
 *Este construtor para classe CarrdaRevenda recebe valores para inicializar os
 *campos da classe
 *@param mod o modelo do carro
 *@param fab a marca do carro
 *@param ver a versão do modelo
 *@param cod o codigo
 *@param est o numero de unidades de carro
 *@param pv o preço de venda
 */

CarrodaRevenda (String mod, String fab, String ver, String cod, short est, float pv)
{
	modelo = mod; marca = fab; versão = ver; 
	codigo = cod; estoque = est; pVenda = pv;
}

/**
 * O método quantidadeNoEstoque retorna o estoque do livro encapsulado.
 * @return o estoque do carro encapsulado.
 */

public short quantosNoEstoque()
{
	return estoque;
}

/**
 *  O método qualPreçodeVenda retorna o preço da venda do carro encapsulado.
 *  @return o preço da venda do carro encapsulado
 */

public float qualPreçodeVenda()
{
	return pVenda;
}

public String qualCodigo()
{
	return codigo;
}

public String qualModelo()
{
	return modelo;
}

public void incrementaEstoque()
{
	estoque++;
}

public void decrementaEstoque()
{
	estoque--;
}
/**
 * O método toString retorna uma string contendo os campos desta classe.
 * @retrun uma string com os valores dos campos desta classe
 */
public String toString()
{

String res = "Marca:"+marca+"\n"+
             "Modelo:"+modelo+"\n"+   
             "Versão"+versão+"\n"+
             "Codigo"+codigo+"\n"+
             "Estoque"+estoque+"\n"+
             "Preço de Venda:"+pVenda+"\n";

return res;
}

}


package Principal;

import java.util.*;

/**

  • A classe EstoqueDaRevenda representa uma coleção de instancias da classe
  • CarrodaRevenda. As instancias serão armazenadas em um mapa.

*/

public class EstoqueDaRevenda {

private Map estoque;
private float saldoDoCaixa; // valor das vendas efetuadas

/** 
 * O construtor dessa classe inicializa os campos da classe.
 */

EstoqueDaRevenda()
{
	estoque = new HashMap ();
}

/**
 * O método adicionaCarro adiciona um carro à colocação representada por esta classe.
 *@param livro uma instancia da classe CarrodaRevenda
 */

public void adicionaCarro(CarrodaRevenda carro)
{
	String cod = carro.qualCodigo();// recupera o codigo pra usar como chave
	estoque.put(cod,carro); // adicionamos o livro com esta cahve ao mapa
}
/**
 * O método mostraCaixa mostra o balanço do caixa.
 */

public void mostraCaixa()
{
	System.out.println("Saldo do caixa: "+saldoDoCaixa);
}

/**
 * O método vendeCarro simula a venda de um carro do estoque. O Codigo de um dos
 * carros no estoque será pedido e o carro correspondente terá seus dados
 * modificados
 */

public void vendeCarro()
{
	//Recuperamos um codigo do carro no estoque com um menu
	String codigo = escolheCarro();
	//Recuperamos o carro correspondente do mapa
	CarrodaRevenda carro = (CarrodaRevenda)estoque.get(codigo);
	if (carro.quantosNoEstoque() > 0)
	{
		carro.decrementaEstoque();
		saldoDoCaixa += carro.qualPreçodeVenda();
		System.out.println("Quantidade do carro"+carro.qualModelo()+" no estoque:"+ carro.quantosNoEstoque());
		mostraCaixa();
	}
	
	else
		System.out.println("Não tempos o carro"+ carro.qualModelo()+" no estoque!");
	}

/**
 * O método escolheCarro (declarado com privado, para ser usado somente por outros
 * métodos nesta classe) permite a escolha de um carro a partit de um número(entrada
 * de um menu). Seria mais simples para o programador fazer o usuário entrar 
 * diretamente o codigo do carro, o que seria mais complicado para o usuário de uma 
 * aplicação que usasse este método (o usuário poderia digitar valores incorretos).
 * @return o codigo do carro escolhido ( como uma String)
 */
private String escolheCarro()

{

System.out.println("=============");

ArrayList listaDeCodigos = new ArrayList (estoque.keySet());

for (int indice=0; indice<listaDeCodigos.size();indice++)

{


CarrodaRevenda carro = (CarrodaRevenda)estoque.get(listaDeCodigos.get(indice));


System.out.println((indice+1)+" "+carro.qualModelo()+": R$ "+carro.qualPreçodeVenda());

System.out.println("====================");

}

int opção = Keyboard.readInt();

while ((opção <= 0) || (opção > listaDeCodigos.size()) )

{

System.out.println("Por Favor entre com um valor entre 1 e"+ listaDeCodigos.size());

opção = Keyboard.readInt();

}


return (String)listaDeCodigos.get(opção-1);

}



public String toString()

{

StringBuffer resultado = new StringBuffer();

resultado.append("=============");

Interator carros = estoque.KeySet().iterator();

while (carros.hasNext())

{

CarrodaRevenda carro = (CarrodaRevenda)estoque.get(carros.next());

resultado.append(carro.toString());

resultado.append("============");

}

return resultado.toString();

}

package Principal;

public class DemoEstoqueDaRevenda {

private static EstoqueDaRevenda estoque;

	public static void main(String[] args) {
	
		estoque = new EstoqueDaRevenda ();
		estoque.adicionaCarro(new CarrodaRevenda("Chevrolet",
				"Celta","Life"));
		
		boolean continua=true;
		while(continua)
		{
			System.out.println("Menu");
			System.out.println("1 - Consulta Estoque");
			System.out.println("2 - Vende Carro");
			System.out.println("3- Mostra Caixa");
			System.out.println("Opção =>");
			char opção = Keyboard.readChar();
			
			switch(opção)
			{
			case '1': System.out.println(estoque);break;
			case '2': estoque.vendeCarro() ;
			case '3': estoque.mostraCaixa();
			default : System.out.println("Opção ["+opção+"] desconhecida!");
			
			}
		}
}

}

2 Respostas

Adelar
Olá, você está inicializando com um construtor que não foi criado ainda:
...
estoque = new EstoqueDaRevenda (); 
estoque.adicionaCarro(new CarrodaRevenda("Chevrolet", 
"Celta","Life")); 

boolean continua=true;
...

para funcionar corretamente você terá que fazer um construtor na classe EstoqueDaRevenda que possua três parâmetros tipo String, ou outra forma...

boa sorte.

Dica: coloque os códigos entre as tags [ code ] [/ code] para facilitar a visualização

Att.

G

Pessoal, arrumei aqui, só que agora a JOption não tá lendo o resultado que eu insiro.

package Principal;

public class CarrodaRevenda {

// ano de fabricação, ano do modelo, modelo, marca, preço, 
	
	
	private String modelo,marca,versão;
	private String codigo;
	private int estoque;
	private float pVenda;
	
	/**
	 *Este construtor para classe CarrdaRevenda recebe valores para inicializar os
	 *campos da classe
	 *@param mod o modelo do carro
	 *@param fab a marca do carro
	 *@param ver a versão do modelo
	 *@param cod o codigo
	 *@param est o numero de unidades de carro
	 *@param pv o preço de venda
	 */
	
	CarrodaRevenda (String mod, String fab, String ver, String cod, int est, float pv)
	{
		modelo = mod; marca = fab; versão = ver; 
		codigo = cod; estoque = est; pVenda = pv;
	}
	
	/**
	 * O método quantidadeNoEstoque retorna o estoque do livro encapsulado.
	 * @return o estoque do carro encapsulado.
	 */
	
	public int quantosNoEstoque()
	{
		return estoque;
	}
	
	/**
	 *  O método qualPreçodeVenda retorna o preço da venda do carro encapsulado.
	 *  @return o preço da venda do carro encapsulado
	 */
	
	public float qualPreçodeVenda()
	{
		return pVenda;
	}
	
	public String qualCodigo()
	{
		return codigo;
	}
	
	public String qualModelo()
	{
		return modelo;
	}
	
	public void incrementaEstoque()
	{
		estoque++;
	}

	public void decrementaEstoque()
	{
		estoque--;
	}
	/**
	 * O método toString retorna uma string contendo os campos desta classe.
	 * @retrun uma string com os valores dos campos desta classe
	 */
	public String toString()
	{
	
	String res = "Marca:"+marca+"\n"+
	             "Modelo:"+modelo+"\n"+   
	             "Versão"+versão+"\n"+
	             "Codigo"+codigo+"\n"+
	             "Estoque"+estoque+"\n"+
	             "Preço de Venda:"+pVenda+"\n";
	
	return res;
	}
	
}
package Principal;

import java.util.*;
import javax.swing.JOptionPane;

/**
 * A classe EstoqueDaRevenda representa uma coleção de instancias da classe
 * CarrodaRevenda. As instancias serão armazenadas em um mapa.
 * 
 *
 */

public class EstoqueDaRevenda {
	
	private Map estoque;
	private float saldoDoCaixa; // valor das vendas efetuadas
	
	/** 
	 * O construtor dessa classe inicializa os campos da classe.
	 */
	
	EstoqueDaRevenda()
	{
		estoque = new HashMap ();
	}
	
	/**
	 * O método adicionaCarro adiciona um carro à colocação representada por esta classe.
	 *@param livro uma instancia da classe CarrodaRevenda
	 */
	
	public void adicionaCarro(CarrodaRevenda carro)
	{
		String cod = carro.qualCodigo();// recupera o codigo pra usar como chave
		estoque.put(cod,carro); // adicionamos o livro com esta cahve ao mapa
	}
	/**
	 * O método mostraCaixa mostra o balanço do caixa.
	 */
	
	public void mostraCaixa()
	{
		System.out.println("Saldo do caixa: "+saldoDoCaixa);
	}
   
	/**
	 * O método vendeCarro simula a venda de um carro do estoque. O Codigo de um dos
	 * carros no estoque será pedido e o carro correspondente terá seus dados
	 * modificados
	 */
	
	public void vendeCarro()
	{
		//Recuperamos um codigo do carro no estoque com um menu
		String codigo = escolheCarro();
		//Recuperamos o carro correspondente do mapa
		CarrodaRevenda carro = (CarrodaRevenda)estoque.get(codigo);
		if (carro.quantosNoEstoque() > 0)
		{
			carro.decrementaEstoque();
			saldoDoCaixa += carro.qualPreçodeVenda();
			System.out.println("Quantidade do carro"+carro.qualModelo()+" no estoque:"+ carro.quantosNoEstoque());
			mostraCaixa();
		}
		
		else
			System.out.println("Não tempos o carro"+ carro.qualModelo()+" no estoque!");
		}
	
	/**
	 * O método escolheCarro (declarado com privado, para ser usado somente por outros
	 * métodos nesta classe) permite a escolha de um carro a partit de um número(entrada
	 * de um menu). Seria mais simples para o programador fazer o usuário entrar 
	 * diretamente o codigo do carro, o que seria mais complicado para o usuário de uma 
	 * aplicação que usasse este método (o usuário poderia digitar valores incorretos).
	 * @return o codigo do carro escolhido ( como uma String)
	 */
	private String escolheCarro()

	{

	System.out.println("=============");

	ArrayList listaDeCodigos = new ArrayList (estoque.keySet());

	for (int indice=0; indice<listaDeCodigos.size();indice++)

	{


	CarrodaRevenda carro = (CarrodaRevenda)estoque.get(listaDeCodigos.get(indice));


	System.out.println((indice+1)+" "+carro.qualModelo()+": R$ "+carro.qualPreçodeVenda());

	System.out.println("====================");

	}

	int opção = Integer.parseInt(JOptionPane.showInputDialog(""));

	while ((opção <= 0) || (opção > listaDeCodigos.size()) )

	{

	System.out.println("Por Favor entre com um valor entre 1 e"+ listaDeCodigos.size());

	opção = Integer.parseInt(JOptionPane.showInputDialog(""));

	}


	return (String)listaDeCodigos.get(opção-1);

	}



	public String toString()

	{

	StringBuffer resultado = new StringBuffer();

	resultado.append("=============");

	Iterator carros = estoque.keySet().iterator();

	while (carros.hasNext())

	{

	CarrodaRevenda carro = (CarrodaRevenda)estoque.get(carros.next());

	resultado.append(carro.toString());

	resultado.append("============");

	}

	return resultado.toString();

	}



	
}
package Principal;

import javax.swing.JOptionPane;

public class DemoEstoqueDaRevenda {
	
	private static EstoqueDaRevenda estoque;

	public static void main(String[] args) {
	
		estoque = new EstoqueDaRevenda ();
		estoque.adicionaCarro(new CarrodaRevenda("Chevrolet",
				"Celta","Life", "10 ", 1, 30000));
		
		boolean continua=true;
		while(continua)
		{
			System.out.println("Menu");
			System.out.println("1 - Consulta Estoque");
			System.out.println("2 - Vende Carro");
			System.out.println("3- Mostra Caixa");
			System.out.println("Opção =>");
			int opção = Integer.parseInt(JOptionPane.showInputDialog(""));
			
			switch(opção)
			{
			case '1': System.out.println(estoque);break;
			case '2': estoque.vendeCarro() ;
			case '3': estoque.mostraCaixa();
			default : System.out.println("Opção ["+opção+"] desconhecida!");
			
			}
		}
}
	
}
Criado 10 de junho de 2010
Ultima resposta 11 de jun. de 2010
Respostas 2
Participantes 2