Back to top if size is not reached

1

Well, I got a lot of fucking work this week and I'm having trouble with a part of it ... It's the following, I have to set up a system for a bracelet shop, which gives the option of choosing size and pendants, each pendant and size with its length and price. So far what I learned was the basics of JAVA so the difficulty of putting together this system. But I got it quiet, I'm just in trouble I do not know how to make it repeat the pendant choice pieces, in case the total pendant size that the user chooses does not close the bracelet size .. The code is well polluted by the fact that it is the knowledge I have at the moment ... If anyone has bag and tell me how to do I'm waiting. Hugs!

import java.util.Scanner;
public class Bichara_System{
    public static void main(String args[]){
        Scanner in = new Scanner(System.in);
        System.out.println("Digite o tamanho da pulseira\nPequena (17cm) - R$180,00\nMédia (18cm) - R$200,00\nGrande (20cm) - R$240,00");
        String pulseira = in.nextLine();
        int valorpulseira = 0;
        int tamanhopulseira = 0;
        if(pulseira.toLowerCase().equals("pequena")){
            pulseira = "pequena";
            valorpulseira = 180;
            tamanhopulseira = 17;
            System.out.println("Total: R$180,00\nAgora escolha o pingente:");
        } else if(pulseira.toLowerCase().equals("media")){
            pulseira = "media";
            valorpulseira = 200;
            tamanhopulseira = 18;
            System.out.println("Total: R$200,00\nAgora escolha o pingente:");
        } else if(pulseira.toLowerCase().equals("grande")){
            pulseira = "grande";
            valorpulseira = 240;
            tamanhopulseira = 20;
            System.out.println("Total: R$240,00\nAgora escolha o pingente:");
        }
        System.out.println("Bichinhos (1,3cm) - R$225,00\nBonequinhos (1,5cm) - R$185,00\nBerloques (0,5cm) - R$200,00\nCubinhos (1cm) - R$190,00\nRolinho (2cm) - Prata, Pedra e Esmaltados.");
        String pingente = in.nextLine();
        int valorpingente = 0;
        double tamanhopingente = 0;
        int valor = 0;
        double tamanhofinal = 0;
        if(pingente.toLowerCase().equals("bichinhos")){
            pingente = "bichinhos";
            valorpingente = 225;
            tamanhopingente = 1.3;
            System.out.println("Quantos?");
            int qntsbichinhos = in.nextInt();
            double tamanhobichinhos = qntsbichinhos*tamanhopingente;
            if(tamanhobichinhos > tamanhopulseira){
                System.out.println("Você escolheu um número de bichinhos que excede o tamanho da pulseira!");
            } else {
                int valorbichinhos = qntsbichinhos*valorpingente;
                valor = valorpulseira+valorbichinhos;
                tamanhofinal = qntsbichinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
        double tamanhofinal2 = 0;
        if(pingente.toLowerCase().equals("bonequinhos")){
            pingente = "bonequinhos";
            valorpingente = 185;
            tamanhopingente = 1.5;
            System.out.println("Quantos?");
            int qntsbonequinhos = in.nextInt();
            double tamanhobonequinhos = qntsbonequinhos*tamanhopingente;
            if(tamanhobonequinhos > tamanhopulseira){
                System.out.println("Você escolheu um número de bonequinhos que excede o tamanho da pulseira!");
            } else {
                int valorbonequinhos = qntsbonequinhos*valorpingente;
                valor = valorpulseira+valorbonequinhos;
                tamanhofinal2 = qntsbonequinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
        double tamanhofinal3 = 0;
        if(pingente.toLowerCase().equals("berloques")){
            pingente = "berloques";
            valorpingente = 200;
            tamanhopingente = 0.5;
            System.out.println("Quantos?");
            int qntsberloques = in.nextInt();
            double tamanhoberloques = qntsberloques*tamanhopingente;
            if(tamanhoberloques > tamanhopulseira){
                System.out.println("Você escolheu um número de berloques que excede o tamanho da pulseira!");
            } else {
                int valorberloques = qntsberloques*valorpingente;
                valor = valorpulseira+valorberloques;
                tamanhofinal3 = qntsberloques*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
        double tamanhofinal4 = 0;
        if(pingente.toLowerCase().equals("cubinhos")){
            pingente = "cubinhos";
            valorpingente = 190;
            tamanhopingente = 1;
            System.out.println("Quantos?");
            int qntscubinhos = in.nextInt();
            double tamanhocubinhos = qntscubinhos*tamanhopingente;
            if(tamanhocubinhos > tamanhopulseira){
                System.out.println("Você escolheu um número de cubinhos que excede o tamanho da pulseira!");
            } else {
                int valorcubinhos = qntscubinhos*valorpingente;
                valor = valorpulseira+valorcubinhos;
                tamanhofinal4 = qntscubinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
        double tamanhofinal5 = 0;
        if(pingente.toLowerCase().equals("rolinho")){
            pingente = "rolinho";
            tamanhopingente = 2;
            System.out.println("Escolha o material:\nPrata - R$150,00\nPedras - R$220,00\nEsmaltados - R$198,00");
            String rolinho = in.nextLine();
            if(rolinho.toLowerCase().equals("prata")){
                valorpingente = 150;
            }if(rolinho.toLowerCase().equals("pedras")){
                valorpingente = 220;
            }if(rolinho.toLowerCase().equals("esmaltados")){
                valorpingente = 198;
            }
            System.out.println("Quantos?");
            int qntsrolinhos = in.nextInt();
            double tamanhorolinhos = qntsrolinhos*tamanhopingente;
            if(tamanhorolinhos > tamanhopulseira){
                System.out.println("Você escolheu um número de rolinhos que excede o tamanho da pulseira!");
            } else {
                int valorcubinhos = qntsrolinhos*valorpingente;
                valor = valorpulseira+valorcubinhos;
                tamanhofinal4 = qntsrolinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
        System.out.println("Você deseja adquirir um suporte de segurança pelo preço de R$95,00? (Sim ou Não)");
        String suporte = in.nextLine();
        int valorsuporte = 0;
        if(suporte.toLowerCase().equals("sim")){
            valorsuporte = 95;
            valor = valorpulseira+valorpingente+valorsuporte;
            System.out.println("Total: "+valor);
        } else {
            valor = valorpulseira+valorpingente+valorsuporte;
            System.out.println("Total: "+valor);
        }

    }
}
    
asked by anonymous 26.03.2015 / 22:11

2 answers

4

If you want to execute certain code, then repeat it if at the end certain condition is not satisfied, the most natural way is to use do...while (do X, if condition Y is true, do X again, etc.) . But it is also possible by using a simple while (if condition Y is true, do X, if condition Y is true, do X again, etc.).

  • Move everything that can be repeated into a separate "section". For example, your code:

    System.out.println("Total: R$180,00\nAgora escolha o pingente:");
    

    is problematic because in this way the Agora escolha o pingente: will only be printed once (in addition this phrase repeats itself several times, it would be better to separate it anyway). An alternative would be:

    if(pulseira.toLowerCase().equals("pequena")){
        pulseira = "pequena";
        valorpulseira = 180;
        tamanhopulseira = 17;
        System.out.println("Total: R$180,00\n");
    } else if(pulseira.toLowerCase().equals("media")){
        pulseira = "media";
        valorpulseira = 200;
        tamanhopulseira = 18;
        System.out.println("Total: R$200,00\n");
    } else if(pulseira.toLowerCase().equals("grande")){
        pulseira = "grande";
        valorpulseira = 240;
        tamanhopulseira = 20;
        System.out.println("Total: R$240,00\n");
    }
    
    System.out.println("Agora escolha o pingente:");
    
  • Create a condition - initially true - saying whether or not to continue in loop . Then move your code into the loop (keep the variable declarations off, so they remain accessible for the rest of the code, if applicable):

    String pingente; // Não leia ainda!
    int valorpingente = 0;
    double tamanhopingente = 0;
    int valor = 0;
    double tamanhofinal = 0;
    
    boolean continuar1 = true;
    while ( continuar1 ) { // Executa pelo menos uma vez, e repete
                           // enquanto continuar1 não ficar falso
    
        System.out.println("Agora escolha o pingente:");
        System.out.println("Bichinhos (1,3cm) - R$225,00\nBonequinhos (1,5cm) - R$185,00\nBerloques (0,5cm) - R$200,00\nCubinhos (1cm) - R$190,00\nRolinho (2cm) - Prata, Pedra e Esmaltados.");
        pingente = in.nextLine(); // Agora sim, leia
    
        if(pingente.toLowerCase().equals("bichinhos")){
            pingente = "bichinhos";
            valorpingente = 225;
            tamanhopingente = 1.3;
            System.out.println("Quantos?");
            int qntsbichinhos = in.nextInt();
            double tamanhobichinhos = qntsbichinhos*tamanhopingente;
            if(tamanhobichinhos > tamanhopulseira){
                System.out.println("Você escolheu um número de bichinhos que excede o tamanho da pulseira!");
            } else {
                int valorbichinhos = qntsbichinhos*valorpingente;
                valor = valorpulseira+valorbichinhos;
                tamanhofinal = qntsbichinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
            }
        }
    
        // ... (inserir as outras opções, também adaptadas)
    }
    

    (Note: Do not test this code yet - since it will go into an infinite loop

  • Finally, establish the necessary condition to exit loop . In this case, it is if the user has chosen a valid size:

            } else {
                int valorbichinhos = qntsbichinhos*valorpingente;
                valor = valorpulseira+valorbichinhos;
                tamanhofinal = qntsbichinhos*tamanhopingente+tamanhopulseira;
                System.out.println("\nTotal:" +valor);
    
                continuar1 = false; // Isso fará com que o código não se repita mais
            }
    
  • 26.03.2015 / 23:22
    2

    Final code with while:

    import java.util.Scanner;
    public class Sistema_Bichara{
        public static void main(String args[]){
            Scanner in = new Scanner(System.in);
            //Primeiro Menu
            System.out.println("Digite o o número referente ao tamanho da pulseira\n1.Pequena (17cm) - R$180,00\n2.Média (18cm) - R$200,00\n3.Grande (20cm) - R$240,00");
            // Incio declaração de variáveis
            int digita = in.nextInt();
            double pagar = 0;
            double valor = 0;
            double valor2 = 0;
            int tamanhopulseira = 0;
            double tamanhototal = 0.0;
            // Fim declaraçaõ de variáveis
            // Inicio de opções de pulseiras e definido seus preços e tamanhos nas variáveis
            switch(digita){
                case 1:
                valor += 180;
                tamanhopulseira = 17;
                System.out.println("Total: R$180,00\nAgora escolha o(s) pingente(s):");
                break;
                case 2:
                valor += 200;
                tamanhopulseira = 18;
                System.out.println("Total: R$200,00\nAgora escolha o(s) pingente(s):");
                break;
                case 3:
                valor += 240;
                tamanhopulseira = 20;
                System.out.println("Total: R$240,00\nAgora escolha o(s) pingente(s):");
                break;
            }
            // Final da escolha da pulseira
            // Inicio da escolha dos 'enfeites' da pulseira com while para não ultrpassar o tamanho máximo da pulseira. Possui opção para ir direto para o pagamento no meio da escolha (caso não queria preencher o tamanho da pulseira inteiro)
            while (digita != 6 && tamanhototal < tamanhopulseira) {
            System.out.println("1.Bichinhos (1,3cm) - R$225,00\n2.Bonequinhos (1,5cm) - R$185,00\n3.Berloques (0,5cm) - R$200,00\n4.Cubinhos (1cm) - R$190,00\n5.Rolinho (2cm) - Prata, Pedra e Esmaltados\n6.Ir para o pagamento");
            digita = in.nextInt();
            switch(digita){
                case 1:
                valor += 225;
                tamanhototal += 1.3;
                break;
                case 2:
                valor += 185;
                tamanhototal += 1.5;
                break;
                case 3:
                valor += 200;
                tamanhototal += 0.5;
                break;
                case 4:
                valor += 190;
                tamanhototal += 1;
                break;
                case 5:
                tamanhototal += 2;
                System.out.println("Escolha o material:\n1.Prata - R$150,00\n2.Pedras - R$220,00\n3.Esmaltados - R$198,00");
                int rolinho = in.nextInt();
                switch(rolinho){
                    case 1:
                    valor += 150;
                    break;
                    case 2:
                    valor += 220;
                    break;
                    case 3:
                    valor += 198;
                    break;
                }
            }
            if(tamanhototal > tamanhopulseira){
                System.out.println("\nTamanho máximo da pulseira atingido\n1.Prosseguir para o pagamento.");
                digita = in.nextInt();
        }
    
    }
    //Final escolha dos enfeites
    //Começa processo de pagamento
        if(digita==6){
        System.out.println("\nDigite 1 para prosseguir para o pagamento.");
        digita = in.nextInt();
    }
    //Oferece o suporte de segurança e se dito que sim, acrescenta o valor de 95 reais no preço total do produto
        System.out.println("\nDeseja adquirir um suporte de segurança pelo preço de R$95,00?\n1.Sim\n2.Não");
        digita = in.nextInt();
        if(digita == 1){
            valor += 95;
    }
    //Continua o processo de pagamento informando o valor total da compra e oferecendo os tipos de pagamento
        System.out.println("\nO preço total da compra fica de: R$"+valor);
        System.out.println("\nA loja oferece os seguintes tipos de pagamento:");
        System.out.println("\n1. À vista com 5% de desconto");
        System.out.println("\n2. 3 vezes no cartão sem acrescimos");
        System.out.println("\n3. 5 vezes no cartão com acresimo de 10% no preço total");
        System.out.println("\n4. 10 vezes no cartão com acresimo de 20% no preço total");
        System.out.println("\nDigite o número da forma de pagamento escolhida.");
        digita = in.nextInt();
        //Pega o pagamento escolhido e aplica o cálculo matemático para descontos ou acrescimos de preço. Também calcula o valor de cada parcela caso seja parcelado.
        switch(digita){
            case 1:
            valor = valor*0.95;
            break;
            case 2:
            pagar = valor/3;
            break;
            case 3:
            valor2 = (valor*110)/100;
            pagar = valor2/5;
            break;
            case 4:
            valor2 = (valor*120)/100;
            pagar = valor2/10;
            break;
                }
        //Condição para mostrar o valor total de acordo com o pagamento escolhido
        if (digita == 3){
            System.out.println("\nO valor total da compra ficou de: R$" +valor2);
        } else if (digita == 4){
            System.out.println("\nO valor total da compra ficou de: R$" +valor2);
        } else {
            System.out.println("\nO valor total da compra ficou de: R$" +valor);
        }
        //Condição para mostrar o valor total e o valor das parcelas se a pessoa escolheu parcelado
        if(digita == 2){
        System.out.println("\nForma de pagameto: 3 parcelas de R$" +pagar);
        System.out.println("\nA loja aceita os seguintes cartões:\n1.Visa\n2.MasterCard\n3.Rede Shop\n4.American Express\n5.Hipercard\n6.Diners Club International");
        digita = in.nextInt();
    }  else if(digita == 3){
        System.out.println("\nForma de pagameto: 5 parcelas de R$" +pagar);
        System.out.println("\nA loja aceita os seguintes cartões:\n1.Visa\n2.MasterCard\n3.Rede Shop\n4.American Express\n5.Hipercard\n6.Diners Club International");
        digita = in.nextInt();
    }else if(digita == 4){
        System.out.println("\nForma de pagameto: 10 parcelas de R$" +pagar);
        System.out.println("\nA loja aceita os seguintes cartões:\n1.Visa\n2.MasterCard\n3.Rede Shop\n4.American Express\n5.Hipercard\n6.Diners Club International");
        digita = in.nextInt();
    }
    //Fim do sistema e agradecimento ao cliente
        System.out.println("\nObrigado por comprar conosco!");
    }
    }
    
        
    28.03.2015 / 19:13