1
resposta

Duvida em lógica de estrutura de repetição

Eu quero usar uma estrutura de repetição no menu pra que quando eu aperte o 8 ele saia e quando eu apertar o 9 que não tem no menu por exemplo ele repita o menu e continue funcionando as outras opções do menu,não estou conseguindo fazer isso pois é a primeira vez que tento com String,Se alguém poder me ajudar ficarei grato,já tentei com o while (!(op.equals("8")));,só que sei que o erro é de lógica,desde já agradeço

package ProjetoFinal;

import java.util.ArrayList;
import java.util.Scanner;

public class QuestãoMenu {
    public static ArrayList<Camisa> c1 = new ArrayList<Camisa>();
    public static ArrayList<Acessórios> Ac = new ArrayList<Acessórios>();

public static void main(String[] args) {
    Scanner ler = new Scanner(System.in);
    Camisa c = new Camisa();
    Acessórios p = new Acessórios();
    int indice;
    String op,nome;


do {
    op = menu(ler);
    switch (op) {
    case "1":
        c1.add(c.cadastrar(ler));
        break;
    case "2":
        Ac.add(p.cadastrar(ler));
        break;
    case"3":
        System.out.println("Digite para localizar camisa");
        nome=ler.next();
        indice=c.localizarCamisa(c1, nome);
        if(indice>=0) {
             c1.get(indice);
             System.out.println("Localizado" +  nome);
        }else {
                System.out.println("Não localizado");
            }

         break;

    case"4":
        System.out.println("Digite para localizar acessório");
        nome=ler.next();
        indice=p.localizarAcessórios(Ac, nome);
        if(indice>=0) { 
            Ac.get(indice);
             System.out.println("Localizado" +  nome);
        }else {
                System.out.println("Não localizado");
            }

         break;

    case"5":
         c.Imprimir(c1);
    break;
    case "6":
        System.out.print("Remova ");
        nome = ler.next();
        indice = c.localizarCamisa(c1, nome);
        if(indice >=0 ) {
        c1.remove(indice);
        }else {
            System.out.print("Conta não Localizada: ");    
        }

        break;
    case "7":
        System.out.print("Remova ");
        nome = ler.next();
        indice = p.localizarAcessórios(Ac, nome);
        if(indice >=0 ) {
        c1.remove(indice);
        }else {
            System.out.print("Conta não Localizada: ");    
        }

        break;

    case "8":
        System.out.println("Fim do programa");




    }}while (!(op.equals("8")));
}



    public static String menu(Scanner ler) {

        String op;
        //do {
            System.out.println("\nMenu");
            System.out.println("1 - Cadastrar Camisa");
            System.out.println("2 - Cadastrar Acessórios");
            System.out.println("3-Para localizar camisa");
            System.out.println("4-Para localizar acessórios");
            System.out.println("5-Para Imprimir");
            System.out.println("6-Para remover camisa");
            System.out.println("7- Para remover acessórios");
            System.out.println("8-Para sair");
            op = ler.nextLine();
        //} while (!(op.equals("8")));
        return op;
    }
1 resposta

Olá Vitor,

não sei se entendi sua dúvida, pois testei o seu código e ele se comporta exatamente do jeito que eu acho que você queria. Quando digitei 9 ele apenas imprimiu novamente o menu para o usuário passar uma nova opção. E apenas quando digitei 8 que ele encerrou o programa.