Retornar Metodo

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

[code]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();
	}	
}

}[/code]

Classe Carro

[code]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");
	}						
}

}[/code]

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

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

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?

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

E esse código está bem mauzinho…

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.

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

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”…

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

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! =)

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