Problema com NumberFormat em Calculadora

0 respostas
D

Estou tentando fazer uma calculadora que tenha a função de transformar o número digitado em padrão monetário, porcentagem, etc. Estou tentando usar o NumberFormat, mas não estou tendo sucesso. Nesse código eu estou tentando fazer primeiramente funcionar o botão que transforma o numero em padrão monetário, que é o botão “BReal”, onde “freal” representa o getCurrencyInstance.

Essa parte está contida no final do código, no último if. Só estou tentando esse botão mesmo, depois eu continuo o restante. Alguém tem idéia? Segue o código:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.text.NumberFormat;


class Ex11 extends JFrame implements ActionListener{
    
    int decimal;   
    JLabel LNum1,LNum2,LResultado,LBranco1;
    JButton BSoma, BSubtrai, BMultiplica, BDivide, BQuad, BPot, BRaiz, BLimpa, BAumenta, BDiminui, BMoeda, BPorcento, BReal;
    JTextField TNum1,TNum2,TResultado; 
    NumberFormat freal,fporcento, fmoeda, faumenta, fdiminui;
    

    public static void main(String args[]){
        
   
        JFrame GUI = new Ex11();
       
     
        GUI.setVisible(true);
        
     
        GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
    } 
    public Ex11(){
        
    
        setTitle("Terceiro Exercicio");
        
        setSize(400,250);
        
        setLocation(200,200);
        
        getContentPane().setBackground(new Color(220,220,220));

        setLayout(new GridLayout(5,4));
        
                freal = NumberFormat.getCurrencyInstance();
                fmoeda = NumberFormat.getNumberInstance();
                fporcento= NumberFormat.getPercentInstance();
              //  faumenta=
              //  fdiminui=        
        LNum1 = new JLabel("1°Num.");
        
        LNum1.setForeground(Color.blue);
  
        LNum1.setFont(new Font("",Font.BOLD,16));
        
        LNum2 = new JLabel("2°Num.");
   
        LNum2.setForeground(Color.blue);
      
        LNum2.setFont(new Font("",Font.BOLD,16));
              
        LResultado = new JLabel("Resultado");
 
        LResultado.setFont(new Font("",Font.BOLD,16));

        LResultado.setForeground(Color.red);
        
        LBranco1 = new JLabel("");
        
        BSoma = new JButton ("+");      
     
        BSoma.addActionListener(this);
        
        BSubtrai = new JButton ("-");      

        BSubtrai.addActionListener(this);
        
        BMultiplica = new JButton ("x");      
   
        BMultiplica.addActionListener(this);
        
        BDivide = new JButton ("/");      
    
        BDivide.addActionListener(this);
        
        BQuad = new JButton ("Quadrado");      
       
        BQuad.addActionListener(this);
        
        BPot = new JButton ("Potência");      
    
        BPot.addActionListener(this);
        
        BRaiz = new JButton ("Raiz");      
  
        BRaiz.addActionListener(this);
        
        BLimpa = new JButton ("Limpar"); 
     
        BLimpa.addActionListener(this);
 
        BLimpa.setBackground(Color.red);
      
        BLimpa.setForeground(Color.white);
        
        BAumenta = new JButton(">>");
        
        BAumenta.addActionListener(this);
        
        BDiminui = new JButton("<<");
        
        BDiminui.addActionListener(this);
        
        BMoeda = new JButton("0.00");
        
        BMoeda.addActionListener(this);
                
        BReal = new JButton("R$");
        
        BReal.addActionListener(this);
        
        BPorcento = new JButton("0.00%");
                
        BPorcento.addActionListener(this);
                
        
        TNum1 = new JTextField();
        
        TNum2 = new JTextField();
       
        TResultado = new JTextField();
       
        TResultado.setEditable(false);  

        add(LNum1);
        
        add(TNum1);
     
        add(BSoma);

        add(BSubtrai);
    
        add(LNum2);
        
        add(TNum2);
       
        add(BMultiplica);
   
        add(BDivide);
 
        add(LResultado);

        add(TResultado);
      
        add(BQuad);
        
        add(BPot);
        
        add(BRaiz);
        
        add(BMoeda);
        
        add(BReal);
        
        add(BPorcento);
        
        add(LBranco1);
        
        add(BAumenta);
        
        add(BDiminui);
         
        add(BLimpa);
    } 
    
    
    public void actionPerformed(ActionEvent evento){
        

        if (evento.getSource()==BLimpa)
        {
    
            TNum1.setText("");  
                   
            TNum2.setText("");  
    
            TResultado.setText("");
            
            return;
        }
        
       
        float num1=0,num2=0,resultado=0;

        try
        {
             
     
            num1 = Float.parseFloat(TNum1.getText());
                                  
                         if(!TNum2.getText().equals("")){  
            num2 = Float.parseFloat(TNum2.getText());  
    }  
                            
            }
            
                  
         
            
        catch (NumberFormatException erro)
        { 
            
   
            TResultado.setText("Erro");
         
            return;
        } 
        

        if (evento.getSource()==BSoma)
            resultado = num1 + num2;
     
        if (evento.getSource()==BSubtrai)
            resultado = num1 - num2;

        if (evento.getSource()==BMultiplica)
            resultado = num1 * num2;
     
        if (evento.getSource()==BDivide)
            resultado = num1 / num2;
        
        if (evento.getSource()==BQuad)
            resultado = num1 * num1;
                 
        if (evento.getSource()==BPot)
            resultado = (float) Math.pow(num1, num2);
         
        if (evento.getSource()==BRaiz)
            resultado = (float) Math.sqrt(num1);
          
         if (evento.getSource()==BAumenta)
          //  resultado = (float) Math.sqrt(num1);
             
         if (evento.getSource()==BDiminui)
           // resultado = (float) Math.sqrt(num1);
                
         if (evento.getSource()==BMoeda)
           // resultado = (float) Math.sqrt(num1);
        
         if (evento.getSource()==BPorcento)
           
           resultado =   Float.parseFloat( fporcento.format(num1));
                      
         if (evento.getSource()==BReal)
          
          resultado =   Float.parseFloat( freal.format(num1));

           
        
        
        
        TResultado.setText(String.valueOf(resultado));
        
    } 

    
}   
//variavel global indicando casa decimais. 
//utilizar variavel numerica que foi colocada
Criado 18 de março de 2014
Respostas 0
Participantes 1