Erros com sets e gets!

4 respostas
O

Olá pessoal sou novo aqui e tenho umas dúvidas que talvez já tenham postado, porém não encontrie, seguinte estou com um erro aparecendo e ñ consigo resolver.
vejam abaixo:

setDepart(Depart) in ProdLoja cannot be applied to (java.lang.String)

tenho a class “ProdLoja” e “Depart” criadas.
e a class “CadastroProdLojaDepart” que segue abaixo:

import javax.swing.*;
public class CadastroProdLojaDepart{
	public static void main(String args[])
		{
			String opcao;
			int produto, departamento;
			produto=0;
			departamento=0;
			while(true){
				opcao=JOptionPane.showInputDialog("1? (Cadastro de Produtos) 2? (Cadastro de Departamentos) 3- (Pesquisar Preços) 4- (Pesquisar Produtos) 5- (Sair)");
			if (opcao.equalsIgnoreCase("1"))
				{
					ProdLoja a = new ProdLoja( );
					a.setNome(JOptionPane.showInputDialog("Entre com o nome do produto"));
					a.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Entre com o código do produto")));
					a.setPreco(Double.parseDouble(JOptionPane.showInputDialog("Entre com o preço")));
					a.setDepart(JOptionPane.showInputDialog("Entre com o nome do Departamento"));
					produto++; // cadastro de vários produtos
					}
					else
						if (opcao.equalsIgnoreCase("2"))
							{
								Depart b = new Depart();
								b.setNome(JOptionPane.showInputDialog("Entre com o nome do departamento"));
								b.setGerente(JOptionPane.showInputDialog("Entre com o nome do gerente"));
								departamento++; // cadastro de vários departamentos
							}
								
			}			
			System.exit(0);
		}
}

Se puderem me dar umas dicas fico grato, valeu.

4 Respostas

Guilherme_Gomes

Ao que tudo indica a sua função setDepart recebe como parametro um Depart (classe)
A sua linha de codigo:

a.setDepart(JOptionPane.showInputDialog("Entre com o nome do Departamento"));

está passando uma String… Cuidado, o tipo que voce está passando é diferente do tipo que o setDepart recebe! Da uma olhada no seu codigo!

O

olá guilherme, minha class “ProdLoja” está assim:

public class ProdLoja{
private int codigo;
private String nome;
private Double preco;
private Depart depart;

public ProdLoja(){
codigo=0;
nome="";
preco=0.0;
depart=null;
}
public void setCodigo(int icodigo){
codigo=icodigo;
}
public void setNome(String snome){
nome=snome;
}
public void setPreco(double dpreco){
preco=dpreco;
}
public int getCodigo(){
return codigo;
}
public String getNome(){
return nome;
}
public double getPreco(){
return preco;
}
public void setDepart (Depart sdepart){
depart=sdepart;
}
public Depart getDepart(){
return depart;
}
}

Será que devo alterar alguma coisa aqui !

Guilherme_Gomes

Da uma olhada na fuinção:

public void setDepart (Depart sdepart){  
     depart=sdepart;  
}

Ele está recebendo um Depart, e voce está usando esse método assim:

a.setDepart(JOptionPane.showInputDialog("Entre com o nome do Departamento"));

Isso está passando uma String para o método, então voce pode fazer 3 coisas:

  1. Mandar criar um Depart a partir desse JOptionPane e colocar no set, algo como:
a.setDepart(new Depart(JOptionPane.showInputDialog("Entre com o nome do Departamento")));  
//-----Atenção: isso  irá funcionar se a classe Depart tiver um construtor que recebe String!!!
  1. Alterar o método setDepart pra receber uma String e criar o Depart (menos aconselhavel)
public void setDepart (String sdepart){  
     depart= new Depart(sdepart);  
}
  1. Adicionar mais um metodo setDepart(String) :
public void setDepart (Depart sdepart){  
     depart= sdepart;  
}  
public void setDepart (String sdepart){  
     depart= new Depart(sdepart);  
}

Tenta olhar com atenção e entender direitinho o que escrevi.

O

OK. Vou testar as possibilidades.
Obrigado mais uma vez.

Criado 13 de setembro de 2007
Ultima resposta 13 de set. de 2007
Respostas 4
Participantes 2