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