Controle Nível Combustível

Olá, pessoal,

Estou com uma dúvida relativamente boba que não estou encontrando a linha de raciocínio.

Estou iniciando uma aplicação que faz o seguinte:

De acordo com o tipo de combustível ou óleo, ele pega a quantidade de litros de combustível ou quantidade de frascos de óleo (1L cada) e calcula o valor. Porém, ele deve controlar a quantidade no reservatório.

Para cada tipo de combustível ou marca de óleo, existe um reservatório.

O meu código, por enquanto, está assim (só coloquei o trecho do processamento):

while (nivelOleo0 > converterOleo0) { if (!litrosOleo.equals("") && (selOleo.getSelectedIndex() == 0) && (nivelOleo0 > converterOleo0)) { dLitrosOleo = parseDouble(litrosOleo); pagarOleo = dLitrosOleo * 11.00; nivelOleo0 = nivelOleo0 - dLitrosOleo; valorOleo.setText(getCurrencyInstance().format(pagarOleo)); JOptionPane.showMessageDialog(null, "Nível do reservatório atual: " + nivelOleo0); } else{ JOptionPane.showMessageDialog(null, "Quantidade indisponível"); } }

Acontece que, quando entra o JOptionPane, ele fica exibindo a mensagem sempre que pressiona OK, reduzindo o nível do óleo.

Eu preciso que ele armazene em uma variável a cada cálculo realizado o nível do combustível ou óleo, e caso não tenha disponível, exiba a mensagem que não possui a quantidade disponível.

Já tentei de várias formas, mas não encontrei a forma certa e parei nesta do código acima.

Abs,

Mexi mais no código e mudei um pouco o comportamento atual.

Segue o código:

while (nivelOleo0 > 0) { if (!litrosOleo.equals("") && (selOleo.getSelectedIndex() == 0)) { dLitrosOleo = parseDouble(litrosOleo); pagarOleo = dLitrosOleo * 11.00; nivelOleo0 = nivelOleo0 - dLitrosOleo; valorOleo.setText(getCurrencyInstance().format(pagarOleo)); JOptionPane.showMessageDialog(null, "Nível do reservatório atual: " + nivelOleo0); } else{ JOptionPane.showMessageDialog(null, "Quantidade indisponível"); } }

O comportamento agora é o seguinte:

Insiro a quantidade de frascos de óleo, o valor do óleo (R$ 11,00 o frasco) é inserido no JTextField e o JOptionPane é exibido mostrando o nível do óleo. Cada vez que clico em “OK”, ele abre um novo JOptionPane com o novo valor do nível até chegar a zero.

Enquanto for maior que zero vai ficar no While

e no while ele está decrescendo até zero aqui:

nivelOleo0 = nivelOleo0 - dLitrosOleo;  

Toda vez que você clica no OK ele passa novamente pelo While e lá ele encontra

JOptionPane.showMessageDialog(null, "Nível do reservatório atual: " + nivelOleo0);  

e encontrando o JOptionPane e exibe a mensagem "Nível do reservatório atual: " + nivelOleo0 para você, comenta a linha ou tira ela do While.