Exercício de Laços de repetição

8 respostas
E

Galera, preciso um programa de lanchonete a qual o usuário poderá pedir o produto de sua preferência em casa. Eu não posso usar if/else. Fiz da seguinte maneira:

public class número3 {

public static void main(String[] args) {
   
    System.out.println("Seja Bem-Vindo  !");
    String lit = null;
    double gor;
    lit = JOptionPane.showInputDialog("Deseja fazer um pedido ?");
    do {

        switch (lit) {

            case "Sim":

                System.out.println("Produtos:\n"
                        + "Código 1: Refrigerante:R$5,00\n"
                        + "Código 2: Pizza:R$30,00\n"
                        + "Código 3: Lasanha:R20,00$\n"
                        + "Código 4: Butguer King:R$15,00");

                int num = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja:"));

                switch (num) {
                    case 1:

                        gor = (5 * 0.1);
                        System.out.println("O garçom ganha R$ " + gor + " na venda desse produto");
                        break;
                    case 2:

                        gor = (30 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;
                    case 3:

                        gor = (20 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;
                    case 4:

                        gor = (15 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;

                }
                lit = JOptionPane.showInputDialog("Deseja fazer um outro pedido ?");

                break;

            case "Não":
                System.out.println("Obrigado pela visita");
                break;
                

        }
    } while (lit != "Sim");
   
    
}

}

Gostaria da ajuda de vocês, de o por quê quando o usuário digitar “Não” ele entra em loop infinto aparecendo a mensagem " Obrigado pela visita".

OBS: Quando coloco para a condição de repetição ser igual a " Sim ", ele executa apenas uma vez.

8 Respostas

J

Enquanto o lit for diferente de sim o while será infinito.
Ao digitar não o do while continua pois lit é diferente de sim.
Mude a condição do while para não

H

`import javax.swing.JOptionPane;

public class testeFibonnaci {
public static void main(String[] args) {

System.out.println("Seja Bem-Vindo  !");
    String lit = null;
    double gor;
    lit = JOptionPane.showInputDialog("Deseja fazer um pedido ?");
    do {

        switch (lit) {

            case "sim":

                System.out.println("Produtos:\n"
                        + "Código 1: Refrigerante:R$5,00\n"
                        + "Código 2: Pizza:R$30,00\n"
                        + "Código 3: Lasanha:R20,00$\n"
                        + "Código 4: Butguer King:R$15,00");

                int num = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja:"));

                switch (num) {
                    case 1:

                        gor = (5 * 0.1);
                        System.out.println("O garçom ganha R$ " + gor + " na venda desse produto");
                        break;
                    case 2:

                        gor = (30 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;
                    case 3:

                        gor = (20 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;
                    case 4:

                        gor = (15 * 0.1);
                        System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                        break;

                }
                lit = JOptionPane.showInputDialog("Deseja fazer um outro pedido ?");

                break;

            case "nao":
                System.out.println("Obrigado pela visita");
                break;
                

        }
    } while (lit == "Sim");
   
    
}

}

`

E

Mudei a condição, mas o loop infinito persiste.

E

Alterei, e desse jeito o programa pergunta se desejo fazer um pedido, mesmo colocando sim ele se encerra.

J

Amigo, tente assim:

import javax.swing.JOptionPane;

public class Produtos {
public static void main(String[] args) {

System.out.println("Seja Bem-Vindo  !");
double gor;
int lit = JOptionPane.showConfirmDialog(null,"Deseja fazer um pedido? ", "Escolha uma opção", JOptionPane.YES_NO_OPTION);

do {

    switch (lit) {

        case JOptionPane.YES_OPTION:

            System.out.println("Produtos:\n"
                    + "Código 1: Refrigerante:R$5,00\n"
                    + "Código 2: Pizza:R$30,00\n"
                    + "Código 3: Lasanha:R20,00$\n"
                    + "Código 4: Butguer King:R$15,00");

            int num = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja:"));

            switch (num) {
                case 1:

                    gor = (5 * 0.1);
                    System.out.println("O garçom ganha R$ " + gor + " na venda desse produto");
                    break;
                case 2:

                    gor = (30 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;
                case 3:

                    gor = (20 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;
                case 4:

                    gor = (15 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;

            }
    }
    if (lit == JOptionPane.NO_OPTION) {
        System.out.println("Obrigado pela visita");
    break;
    }  else {
       lit = JOptionPane.showConfirmDialog(null,"Deseja fazer outro pedido? ", "Escolha uma opção", JOptionPane.YES_NO_OPTION);  
    }     
   
    switch (lit) {
        case JOptionPane.YES_OPTION:
            continue;
    }    

    
} while (lit == JOptionPane.YES_OPTION);

}
}

E

Mano, eu não posso usar if/else. O professor pediu para não usar nesse exercício.

J

A sim, ok. É so um pequeno detalhe. Ta aí agora.

import javax.swing.JOptionPane;

public class Produtos {
public static void main(String[] args) {

System.out.println("Seja Bem-Vindo  !");
double gor;
int lit = JOptionPane.showConfirmDialog(null,"Deseja fazer um pedido? ", "Escolha uma opção", JOptionPane.YES_NO_OPTION);

do {

    switch (lit) {

        case JOptionPane.YES_OPTION:

            System.out.println("Produtos:\n"
                    + "Código 1: Refrigerante:R$5,00\n"
                    + "Código 2: Pizza:R$30,00\n"
                    + "Código 3: Lasanha:R20,00$\n"
                    + "Código 4: Butguer King:R$15,00");

            int num = Integer.parseInt(JOptionPane.showInputDialog("Digite o código do produto que deseja:"));

            switch (num) {
                case 1:

                    gor = (5 * 0.1);
                    System.out.println("O garçom ganha R$ " + gor + " na venda desse produto");
                    break;
                case 2:

                    gor = (30 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;
                case 3:

                    gor = (20 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;
                case 4:

                    gor = (15 * 0.1);
                    System.out.println("O garçom ganha R$" + gor + " na venda desse produto");
                    break;

            }
                case JOptionPane.NO_OPTION:
                    System.out.println("Obrigado pela visita");
                    break;
    }
      
    switch (lit) {
        case JOptionPane.YES_OPTION:
            lit = JOptionPane.showConfirmDialog(null,"Deseja fazer um pedido? ", "Escolha uma opção", JOptionPane.YES_NO_OPTION);
            continue;
        case  JOptionPane.NO_OPTION: 
            //Nada mais acontece
    }    

    
} while (lit == JOptionPane.YES_OPTION);

}
}

E

Obrigado amigo, funcionou direitinho. Ainda sou iniciante, alguns comando ai ainda não tinha visto, mas só serve com incentivo para o estudo, valeu !

Criado 23 de abril de 2016
Ultima resposta 23 de abr. de 2016
Respostas 8
Participantes 4