dúvida de looping

5 respostas
mirrah

e ai gente, tudo beleza? aqui, estou fazendo um projeto para o meu curso, e eu estou com um problema, eu tenho o "looping pricipal" que dele vai para as outras classes do programa.

package controller;

import model.Produto;

public class Mercearia {

    private static final int LOGAR = 1;
    private static final int CADASTRAR = 2;
    private static final int COMPRA = 3;
    private static final int ADM = 4;
    private static final int SAIR = 5;

    Produto prod;

    Administracao admin;

    public static void main(String [] args){

        Mercearia mer = new Mercearia();

        mer.menu();

        int opcao = Console.lerInt("escolha uma opção: ");

        //loop principal do programa
        do{

          switch(opcao){

              case LOGAR:
                      mer.logar();
                   break;
              case CADASTRAR:
                      mer.cadastro();
                   break;
              case COMPRA:
                     mer.comprar();
                   break;
              case ADM:
                     mer.comprar();
                   break;
              case SAIR:
                      System.out.println("saida do sistema");
                   break;
              default:
                      System.out.println("Esta opção não existe, " +
                          "escolha um opção válida");

          }

        }while( opcao != SAIR );

    }

    public static void menu(){

        System.out.println("menu\n");
        System.out.println("1 - login");
        System.out.println("2 - cadastrar");
        System.out.println("3 - compra");
        System.out.println("4 - administração");
        System.out.println("5 - sair");

    }

    public void comprar(){

         int cod = Console.lerInt("Insira o código do produto");

         prod = new Produto(cod);

         int i = 1;

         String fim = Console.lerString( "" );

         //loop
          while( fim != "n" ){

            cod = Console.lerInt("Insira o código do produto");

            prod = new Produto(cod);

            i ++;

            fim = Console.lerString( "" );

         }
    }

public void logar(){
    
    String login = Console.lerString("lofin: ");
    String senha = Console.lerString("senha: ");   

    System.out.println("cadastro efetuado com sucesso");

}

public void cadastro(){

    System.out.println("Em construção");
    
    
    String nome = Console.lerString("Nome: ");
    String login = Console.lerString("Login: ");
    String senha = Console.lerString("senha: ");

}

public void administracao(){

    admin.principal();

}

}

quando as outras classes param de ser executadas, elas são repeditas, e assim vai até eu sair do programa na marra, hehe.
Eu já olhei e olhei e não acho o que eu fiz de errado, será que alguém poderia me ajudar?

desde já muito grato

5 Respostas

gpd38

opcao != SAIR ???

Nao seria

(!opcao.equals(“SAIR”))

=====================

(opcao != 5)

J

No switch, no case SAIR seta a variavel opcao para sair.

case SAIR: System.out.println("saida do sistema"); opcao = SAIR; break;

mirrah

opcao != SAIR ???

Nao seria

(!opcao.equals(“SAIR”))

cara, o equals não é para comparar variáveis do tipo String, ou eu estou enganado?

ViniGodoy

Você está certo. O que está errado é que você não faz a leitura dentro do loop. Aí o programa nunca pergunta novamente o que o usuário quer fazer.

Passe a linha:

opcao = Console.lerInt("escolha uma opção: ");

Para a linha 27. E deixe a linha 23 como:

int opcao;

Talvez fosse uma boa passar a chamada mer.menu() para dentro do loop também. Ou você terá que ter um usuário de muito boa memória.

mirrah

muitíssimo obrigado, deu certo, valeu!!!

Criado 16 de junho de 2010
Ultima resposta 16 de jun. de 2010
Respostas 5
Participantes 4