Retornar Metodo

9 respostas
G
Eu tenho uma classe principal onde ela faz chamada de alguns metodos, eu faço um cadastro em um vetor, quando finaliza o metodo cadastro ele sai mas ele ñ deveria sair eu preciso q ele retorne para o menu principal so q eu ñ sei como faz isso Classe menu
import javax.swing.JOptionPane;

public class Principal {
	public static void main(String args[]){
		String s1;
		int valor;
		Carro cad = new Carro("","","");
		Carro vnd = new Carro("","","");
		Carro estq = new Carro("","","");
		Oficina rep = new Oficina("","","");
		
				
		s1 = JOptionPane.showInputDialog("\bMENU \bPRINCIPAL\n"+
				"Escolha uma das seguites opções:\n" +
				"1- Cadastrar carro\n" +
				"2- Vender carro\n"+
			    "3- Estoque carro\n"+
				"4- Reparar carro"+
				"0- Sair");
		
		valor = Integer.parseInt(s1);
		while  (valor != 0){
			if (valor == 1)
				cad.cadastraCarro();
			else if(valor == 2)
				vnd.vendeCarro("","");
			else if (valor == 3)
				estq.estoqueCarro();
			else if (valor == 4)
				rep.reparaCarro();
		}	
	}
}
Classe Carro
import javax.swing.JOptionPane;


public class Carro {
	public String modelo;
	public String chassi;
	public String cor;
	public Carro car[] = new Carro[5];
		
	//*****************Metodo construtor
	public Carro (String modelo, String chassi, String cor){
		this.modelo = modelo;
		this.chassi = chassi;
		this.cor = cor;
	}
	
	//****************Metodos Get 
	public String getModelo(){
		return modelo;
	}	
	public String getChassi(){
		return chassi;
	}	
	public String getCor(){
		return cor;
	}
	
	//***************Metodo Set
	public void setModelo(String mod){
		modelo = mod;
	}	
	public void setChassi(String chas){
		chassi = chas;
	}
	

	//****************Cadastro dos Carros
	public void cadastraCarro(){
		for (int x=0; x<5;x++){
			car[x] = new Carro("","","");
			car[x].setModelo(JOptionPane.showInputDialog("Modelo do carro"));
			car[x].setChassi(JOptionPane.showInputDialog("Chassi do carro "));
			System.out.println("Modelo: " +car[x].getModelo()+ "\tChassi: " +car[x].getChassi());
		}
	}
	
	//**************Estoque do Carro
	public void estoqueCarro(){
		for(int x=0; x<5; x++){
			System.out.println(car[x]);
		}		
	}
	
	//****************Venda dos Carros
	public void vendeCarro(String nomecli, String rgcli){
		chassi = JOptionPane.showInputDialog("Digite o numero do chassi do carro");
		if (chassi == (getChassi())){
			nomecli = JOptionPane.showInputDialog("Digite nome do cliente");
			rgcli = JOptionPane.showInputDialog("Digite o rg do cliente");
			JOptionPane.showMessageDialog(null,"Venda realizada com sucesso");
		}
		else{
			JOptionPane.showMessageDialog(null, "Chassi não existe");
		}						
	}
}

Quando executo a principal e faço um cadastro ele chama de boa, so q ele Ñ podia finaliza ele tem q retornar ao menu e eu ñ sei como fazer. Alguem pode me dar uma forcinha ai vlw

9 Respostas

pmlm

http://www.guj.com.br/posts/list/0/127175.java

G

eu ja fiz isso e não deu certo, eu coloquei o seguinte if (valor != 0) e deu não funciona, se eu coloco a em cima do menu da erro pq ele ñ pego o s1 existe algum outro modo de fazer isso?

pmlm
do{
    s1 = ....
    (...)
        rep.reparaCarro();  
         
} while (valor != 0);

E esse código está bem mauzinho…

G

Por ao inves de me criticar vc não me da uma ajuda para estruturar meu código, eu ñ tenho muita noção de Java kara eu fiz oq eu achei q achei q era certo pq compilou e rodou de boa, mas vlw mesmo pela ajuda quebrou um galhão.

pmlm

Não digo que não funcione. Em termos de objectos é que há para aí alguma confusão.

Deves ler sobre OO. Podes começar por: http://www.guj.com.br/article.show.logic?id=149

adriano_si
String s1;  
int valor;  
Carro cad = new Carro("","","");  
Carro vnd = new Carro("","","");  
Carro estq = new Carro("","","");  

Oficina rep = new Oficina("","","");  
           
while  (valor != 0){
	s1 = JOptionPane.showInputDialog("\bMENU \bPRINCIPAL\n"+  
					"Escolha uma das seguites opções:\n" +  
					"1- Cadastrar carro\n" +  
					"2- Vender carro\n"+  
					"3- Estoque carro\n"+  
					"4- Reparar carro"+  
					"0- Sair");  
		   
	valor = Integer.parseInt(s1);  
	switch(valor) {
		case 1:  
			cad.cadastraCarro();
			break;  
		case 2:  
			vnd.vendeCarro("","");
			break;  
		case 3:  
			estq.estoqueCarro();
			break;  
		case 4:  
			rep.reparaCarro();  
			break;
	}
}

Você deve prestar atenção na sua lógica de algoritmo mesmo… o While significa “Enquanto [uma condição verdadeira], faça”… logo o JOption que estava requerendo a entrada de seus dados estava fora desse escopo, portanto só seria executado uma vez… Não verifiquei a instrução Switch direito… dá uma testada aí, mas vc pôde verificar que ela facilita a sua vida para valores inteiros constantes… Mil vezes melhor que if-else…

Vê se resolveu… mas vale a pena seguir as dicas do pmlm, reveja seu código com calma e estude MUITO “OO”…

I

Tipo eu sei que n tem nada a ver com esse tópico mas estou com uma grande dúvida, e para não abrir um novo tópico… vou perguntar aqui mesmo!!!

tipo assim… eu quero entender… a seguinte sintaxe

metodo().metodo();

eu não entendo tal sintaxe. já vi alguns códigos escritos assim,

o que eu chamo do primeiro método colocando um ( .) e o próximo método…

???
Valeu… obrigado

Polimorphism

Olá
Como você deve saber no java existem dois modelos de tipos. Os tipos primitivos e os tipos por referência.
Cada método que não é void tem um valor de retorno. O valor de retorno pode ser tanto um tipo primitivo ou um tipo por referência. Os tipos por referência são objetos de outras classes. Logo, ao chamar metodo().metodo(), você está chamando o método do valor de retorno do primeiro método. ( O primeiro método retorna um Objecto que contem o método metodo() )

Vou mostrar um exemplo:

class Pessoa{
  private String nome;
  public Pessoa( String nome ){
    this.nome = nome;
  }
  public String getNome(){
    return nome;
  }
}
class Carro{
  private Pessoa piloto;
  public Carro( Pessoa piloto ){
    this.piloto = piloto;
  }
  public Pessoa getPiloto(){
    return piloto;
  }
}
class Teste{
   public static void main( String... args ){
      Pessoa joao = new Pessoa( "João" );
      Carro carroDoJoao = new Carro( joao );
      System.out.println( carroDoJoao.getPiloto().getNome() );
   }
}

Nesse exemplo, ao chamar o método getPiloto(), ele retorna uma Pessoa ( o piloto ). Chamando getPiloto().getNome() irá chamar então o nome do piloto.

Boa sorte! =)

I

Nossa… entendi… quer dizer que quando eu chamo um método que retorna um tipo referencia… eu ainda posso acessar os métodos desse tipo… sendo assim pertinente a sintaxe metodo().metodo() né???
Hum…

entendi… valeu… Obrigado

Criado 19 de maio de 2009
Ultima resposta 28 de set. de 2009
Respostas 9
Participantes 5