Erro de lógica usando "while"

3 respostas
javahunter

Ola pessoal, estou precisando fazer esse exercício abaixo

1) O tanque de ar comprimido de um posto de combustível possui armazenado um volume de 1000 libras. Cada caro ao calibrar seus pneus consome uma quantidade X de libras. Construa uma classe que, solicite ao usuário quantos pneus serão calibrados, e a quantidade de pressão de cada pneu (libras), sendo que as pressões serão uniformes. A classe deverá terminar a execução, quando o volume do tanque for 0, deverá ser utilizado o comando While para estrutura de repetição.

o meu ta assim, mas o problema é que ele não ta funfando 100%. Quando a variável armazenamento chega em 0 ele continua o loop e fica pedindo pra continua digitando quantos pneus serão enchidos e a quantidade de libras, e também diz que o armazenamento ta em 1000 mas já era pra ta zerado.

public class Folha11Exercicio1 {
    public static void main(String args[]) {
        
        int armazenamento = 1000;
        int libras;
        int qtd;
        int librastotal;
        int vlrmenor;
        
        while (armazenamento != 0) {
            
            qtd = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite quantos pneus serao calibrados"));
            
            libras = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a qtd de libras que vai nos pneus!"));
            
            librastotal = qtd * libras;
            
            if (librastotal > armazenamento) {
                
                armazenamento += librastotal;
                
                vlrmenor = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um valor menor\nArmazenamento atual é "+armazenamento));
                
                librastotal -= librastotal;
                
                librastotal = vlrmenor * qtd;
                
                armazenamento -= librastotal;
            }
            
            if (librastotal < armazenamento) {
            
                armazenamento -= librastotal;
            
            }
        }
        
        JOptionPane.showMessageDialog(null, "Acabou o armazenamento, agora tudo esta em 0");
    }
}

Alguém me ajuda resolver esse exercício

3 Respostas

romarcio

Sua lógica ta um pouquinho errada.
Ve se assim funciona

while (armazenamento &gt; 0) {
            System.out.println("gas: " + armazenamento);
            qtd = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite quantos pneus serao calibrados"));

            libras = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite a qtd de libras que vai nos pneus!"));

            librastotal = qtd * libras;

            if (librastotal &gt; armazenamento) {

                boolean flag = true;

                vlrmenor = 0;

                while (flag) {
                    vlrmenor = Integer.parseInt(JOptionPane.showInputDialog(null, "Digite um valor menor\nArmazenamento atual eh "+armazenamento));
                    if ( (vlrmenor * qtd) &lt;= armazenamento) {
                        flag = false;
                    }
                }

                librastotal = vlrmenor * qtd;

                armazenamento -= librastotal;
            } else if (librastotal &lt;= armazenamento) {

                armazenamento -= librastotal;

            }
        }
javahunter

Obrigado romarcio,

ta funcionando sim!!!

romarcio

ok :thumbup:

Criado 22 de dezembro de 2012
Ultima resposta 23 de dez. de 2012
Respostas 3
Participantes 2