Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Como fazer para meu programa não fechar após o final da execução em Java?

Se trata do projeto Conversor de Moedas, preciso que ele sempre me mostre o campo de digitar o valor sempre que termine a conversão, eu até consegui, porém ele vai diretamente pra seleção de moedas, e não me deixa digitar um novo valor.

import java.math.BigDecimal;
import javax.swing.JOptionPane;

public class TelaInicial {

    public static void main(String[] args) {
        
        BigDecimal cotacao_dolar = BigDecimal.valueOf(4.81);
        BigDecimal cotacao_euro = BigDecimal.valueOf(5.25);
        BigDecimal cotacao_peso = BigDecimal.valueOf(0.19);
        
        
        String valorConverter = JOptionPane.showInputDialog(null, "Digite um valor para Converter:");
        Integer valor = Integer.parseInt(valorConverter);
        
        while(true)) {
            

             Object[] tiposConversao = { 
                     "De Reais para Dolares", 
                     "De Reais para Euros", 
                     "De Reais para Pesos" 
                     };
             

             Object escolhaMoeda = JOptionPane.showInputDialog(null,
                         "Escolha uma moeda para Conversão", "Seleção da Moeda",
                         JOptionPane.INFORMATION_MESSAGE, null,
                         tiposConversao, tiposConversao[0]);
             
             
             	
             		if(escolhaMoeda.equals("De Reais para Dolares")) {
                         BigDecimal cot1 = BigDecimal.valueOf(valor / cotacao_dolar.doubleValue()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         JOptionPane.showMessageDialog(null, "Valor Convertido: "+ cot1 + " Dolares");

                     } else if (escolhaMoeda.equals("De Reais para Euros")) {
                         BigDecimal cot2 = BigDecimal.valueOf(valor / cotacao_euro.doubleValue()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         JOptionPane.showMessageDialog(null, "Valor Convertido: "+ cot2 + " Euros");
     
                     } else if (escolhaMoeda.equals("De Reais para Pesos")) {
                         BigDecimal cot3 = BigDecimal.valueOf(valor / cotacao_peso.doubleValue()).setScale(2, BigDecimal.ROUND_HALF_EVEN);
                         JOptionPane.showMessageDialog(null, "Valor Convertido: "+ cot3 + " Pesos");
                     }
             		
        }
        

        }
    }

1 resposta
solução!

Isso está acontecendo pois a inserção do valor está acontecendo fora do loop infinito, ou seja, você digita o valor uma vez e entra em loop infinito que fica só no tipo da moeda.

Adicione as linhas dentro do while

String valorConverter = JOptionPane.showInputDialog(null, "Digite um valor para Converter:");
Integer valor = Integer.parseInt(valorConverter);