Problema com lógica

5 respostas
T

Ola pessual, estou tentando desenvolver uma lógica para minha aplicação mas não está funcionando bem do jeito que deveria, eu tenho de permitir que o usuario realize compra, mas não pode exceder o limite de creditos, tenho algo em vista como criar uma auxiliar para armezanar o valor da compra, deem uma plhada, e me ajudem por favor,~deve ser simles, mas no memonto preciso de ajuda.

//clientes de loja de conveniencia compram varios produtos, permitir que compre ate exceder seu credito.


package Capitulo_4;

import javax.swing.*;
import java.text.DecimalFormat;


public class Exercicio_4_11 
{

	public static void main(String[] args) 
	{
		int somaProduto=0;
		double creditos,valProduto=0,somaVal=0;
		String Nome;
		
		DecimalFormat aproxima = new DecimalFormat("0.00");
		
		Nome=JOptionPane.showInputDialog(null,"Digite o nome do cliente","Identificação",JOptionPane.QUESTION_MESSAGE);
		
		creditos=
			Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor dos creditos concedidos","Credito",JOptionPane.QUESTION_MESSAGE));
							
		do
		{		
			valProduto=
				Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor do produto","Valor Produto",JOptionPane.QUESTION_MESSAGE));
			if(valProduto>creditos){
				JOptionPane.showMessageDialog(null, "O cliente não possui saldo suficiente","Atenção",JOptionPane.ERROR_MESSAGE);	
			}if(somaVal>creditos){
				JOptionPane.showMessageDialog(null, "O cliente não possui saldo suficiente","Atenção",JOptionPane.ERROR_MESSAGE);	
			}else{
				somaVal=somaVal+valProduto;
				somaProduto++;	
				}
		}while(somaVal<=creditos);
		
	
		
		JOptionPane.showMessageDialog(null, "O cliente "+Nome+"\nAdquiriu "+somaProduto+" Produtos"+"\ncom o total de R$"+aproxima.format(somaVal));
		
		
	}
}

5 Respostas

L

Boa tarde, Calderoni.

Se entendi corretamente, seu programa ficará no loop até que o cliente gaste todo o crédito. while(somaVal<=creditos)
Penso que você poderia colocar uma condição para que o programa saia do loop antes disso.

int result = JOptionPane.showConfirmDialog(null,"Confirmação de compra ?", "Deseja realizar outra compra ?", JOptionPane.WARNING_MESSAGE); if (result != JOptionPane.YES_OPTION) { break; }

D

Vc poderia fazer o seguinte:

Só ter a variável de soma, recebe o valor do produto e já faz um somaProduto += valorProduto;
Aí sí verifica o valor da soma.

ficaria mais ou menos assim:

somaProduto = 0;

while(somaProduto <= limite){
    lê valor do produto;
    somaProduto += valorProduto;

    if(somaProduto > limite){
        Mostra mensagem e ele vai sair do programa.
    }
}

E fazer uma condição pro cara sair do programa antes tbm.
Acho que isso te atenderia.

T

Putz cara verdade, vou fazer a condição pra ele perguntar se o usuário deseja comprar mais, fiz mais dois loops para verificar, valew mesmo em.

Abraço

renamed
public class Exercicio_4_11{

	public static void main(String[] args) {
		int somaProduto = 0;
		double creditos, valProduto = 0, somaVal = 0;
		String Nome;

		DecimalFormat aproxima = new DecimalFormat("0.00");

		Nome = JOptionPane.showInputDialog(null, "Digite o nome do cliente",
				"Identificação", JOptionPane.QUESTION_MESSAGE);

		creditos = Double.parseDouble(JOptionPane.showInputDialog(null,
				"Digite o valor dos creditos concedidos", "Credito",
				JOptionPane.QUESTION_MESSAGE));

		valProduto = Double.parseDouble(JOptionPane.showInputDialog(null,
				"Digite o valor do produto", "Valor Produto",
				JOptionPane.QUESTION_MESSAGE));
		
		while ((somaVal + valProduto) <= creditos) {

			somaVal += valProduto;
			somaProduto++;

			valProduto = Double.parseDouble(JOptionPane.showInputDialog(null,
					"Digite o valor do produto", "Valor Produto",
					JOptionPane.QUESTION_MESSAGE));

		}

		if ((valProduto > creditos) || (somaVal > creditos)){
			JOptionPane.showMessageDialog(null,
					"O cliente não possui saldo suficiente", "Atenção",
					JOptionPane.ERROR_MESSAGE);
		}


		JOptionPane.showMessageDialog(null, "O cliente " + Nome + "\nAdquiriu "
				+ somaProduto + " Produtos" + "\ncom o total de R$"
				+ aproxima.format(somaVal));

	}
}

Qualquer duvida grita!

romarcio
public static void main(String[] args)
    {
        int somaProduto = 0;
        double creditos, valProduto = 0, somaVal = 0, descontoCredito = 0;
        String Nome;

        DecimalFormat aproxima = new DecimalFormat("0.00");  

        Nome=JOptionPane.showInputDialog(null,"Digite o nome do cliente","Identificação",JOptionPane.QUESTION_MESSAGE);

        creditos=
            Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor dos creditos concedidos","Credito",JOptionPane.QUESTION_MESSAGE));

        descontoCredito = creditos;

        while (somaVal <= creditos) {

            valProduto = Double.parseDouble(JOptionPane.showInputDialog(null,"Digite o valor do produto","Valor Produto",JOptionPane.QUESTION_MESSAGE));

            if (valProduto > descontoCredito){
                JOptionPane.showMessageDialog(null, "O cliente não possui saldo suficiente\n" + "Saldo = " + descontoCredito,"Atenção",JOptionPane.ERROR_MESSAGE);
                if (somaVal <= creditos) {
                    break;
                }
            } else if (somaVal > creditos) {
                JOptionPane.showMessageDialog(null, "O cliente não possui saldo suficiente","Atenção",JOptionPane.ERROR_MESSAGE);
            } else {
                double valorAux = valProduto;
                somaVal = somaVal + valProduto;
                somaProduto++;
                descontoCredito = descontoCredito - valProduto;
                if (somaVal > creditos) {
                  somaVal = somaVal - descontoCredito;
                  somaProduto --;
                  break;  
                }
            }


        }



        JOptionPane.showMessageDialog(null, "O cliente "+Nome+"\nAdquiriu "+somaProduto+" Produtos"+"\ncom o total de R$"+aproxima.format(somaVal));


    }
Criado 22 de dezembro de 2009
Ultima resposta 22 de dez. de 2009
Respostas 5
Participantes 5