Está en la página 1de 8

calculadora , usando notacion polaca inversa

Submitted by sanlegas on Dom, 06/17/2012 - 21:32 

 Java Micro Edition

Bueno amigos el caso es que quiser hacer una calculadora(rpn), primero la hice en la version
estandar y me funciona bien sin errores, el problema es al pasarla a la version micro, me marca
algunos errores que no he podido solucionar
1. no me detecta la clase Queue, por ende todos los metodos usados.
2. si me detecta la clase pila, pero en algunos caso me marca error y no se por que,
aqui el codigo en version estandar
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class once extends JFrame
{
    private JPanel PanelConBotones;
    private JButton Botonsin[];
    private JTextField salida;
    
    private JButton b0,bretroceso,bmas,bigual,ac;
    private JButton parenDerecho,parenIzquierdo,multi,div,punto;
    private JButton modulo,potencia;
    int contador=0;
    int arr[]= new int[2];
 public static int prioridad (char opci)
     {
         if ( opci == '+' || opci=='-')
                return 1;
        else if ( opci=='*' || opci=='/'|| opci == '%')
                return 2;
        else if (opci == '^'  )
                return 3;
        //¬¨ Raiz Cuadrada;
        return -1;
     }
 public static  double resuelve (Queue posfija)
          {
            Stack Pila=new Stack();
            double resultado, a , b;
             while(posfija.peek()!=null)
                {
                    char dato=(Character)posfija.poll();
                    if (Character.isDigit(dato))
                        Pila.push(dato);
                    else
                       {
                        String Str =Pila.pop().toString();
                        b=Double.valueOf(Str).doubleValue();
                       //b=(double)Pila.pop();
                        Str =Pila.pop().toString();
                        a=Double.valueOf(Str).doubleValue();
                        if (dato == '+')
                            Pila.push(a+b);
                        else if (dato == '-')
                            Pila.push(a-b);
                        else if (dato == '*')
                             Pila.push(a*b);
                         else if (dato == '/')
                             Pila.push(a/b);
                        else if (dato == '^')
                           Pila.push( Math.pow(a,b));
                        }
                }
                        String Str =Pila.pop().toString();
                        resultado=Double.valueOf(Str).doubleValue();
                        System.out.println(resultado);
                         return resultado;
          }
 public static String uno (String uno)
         {
    // String uno="(5+3)*(2+3)";
        
         char dato,a,x;
    Queue salida= new java.util.LinkedList();
        Stack Pila=new Stack();
        int i=0;
      for(i=0;i<uno.length();i++)
        {
            dato=uno.charAt(i);
            if (Character.isDigit(dato))
                {
                salida.offer(dato);
                }
            else
             {
                if(Pila.empty() || dato=='(' ||
prioridad(dato)>prioridad((Character)Pila.peek()) )
                    Pila.push(dato);
                else
                    {
                 if(prioridad(dato)==prioridad((Character)Pila.peek()))
                    {
                    x=(Character)Pila.peek();
                    if(x==dato)
                        {
                        Pila.push(dato);
                        }
                    else
                        {
                      x=(Character)Pila.pop();
                        salida.offer(x);
                    Pila.push(dato);
                        }
                    }
                if(dato==')')
                    {
                        while((Character)Pila.peek()!='(')
                        {
                             x=(Character)Pila.pop();
                        salida.offer(x);
                        }
                        Pila.pop();
                    }
                 }
             }//fin del else
        }// fin del metodo
        //vaciar la pila a la cola
         while(!Pila.empty())
             {
            salida.offer(Pila.pop());
            }
        //System.out.println(resuelve(salida));
        String aString = Double.toString(resuelve(salida));
        //return resuelve(salida);
        return aString;
        }
       
    public once()
            {
         super("calculadora");
   
         //Etiqueta=new JLabel("esta es una etiqueta",JLabel.CENTER);
         parenDerecho=new JButton("(");
         parenIzquierdo=new JButton(")");
          multi=new JButton("*");
           div=new JButton("/");
           punto=new JButton(".");
         
         b0=new JButton("0");
         bmas=new JButton("+");
         bigual=new JButton("=");
         ac=new JButton("AC");
          modulo=new JButton("%");
           potencia=new JButton("^");
          ac.setForeground(Color.red);
         bretroceso=new JButton("C");
        bretroceso.setForeground(Color.BLUE);
         salida=new JTextField(10);
        salida.setEditable(false);
       
salida.setBorder(BorderFactory.createTitledBorder(BorderFactory.createBevelBorder
(1),"sanlegas",2,SwingConstants.SOUTH,newFont("Calibri",2+1,13),Color.BLUE));
        salida.setBackground(Color.YELLOW);
        salida.setFont(new Font("Cambria",2,35));
        add(salida);
    
    
         Botonsin=new JButton[9];
           PanelConBotones=new JPanel();
        //PanelConBotones.setLayout(new GridLayout(1,Botonsin.length));
           //PanelConBotones.setLayout(new GridLayout(3,4));
          //PanelConBotones.setLayout(new GridLayout(4,3));
        //PanelConBotones.setLayout(new GridLayout(5,5));
           //PanelConBotones.setLayout(new GridLayout(6,1));
           PanelConBotones.setLayout(new GridLayout(6,3));
          // PanelConBotones.setLayout(new GridLayout(7,1));
          for(int contador=0; contador< Botonsin.length; contador++)
        {
            Botonsin[contador]=new JButton (""+(contador+1));
            PanelConBotones.add(Botonsin[contador]);
       }
PanelConBotones.add(b0);
PanelConBotones.add(bretroceso);
PanelConBotones.add(ac);
PanelConBotones.add(bmas);
PanelConBotones.add(bigual);
//parenDerecho,parenIzquierdo,multi,div,punto;
PanelConBotones.add(parenDerecho);
PanelConBotones.add(parenIzquierdo);
PanelConBotones.add(multi);
PanelConBotones.add(div);
PanelConBotones.add(punto);
PanelConBotones.add(modulo);
PanelConBotones.add(potencia);
bretroceso.setEnabled(false);
ac.setEnabled(false);
         add(PanelConBotones,BorderLayout.SOUTH);
         b0.addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"0");
                                        activaRetroceso();
                                        //activaRetroceso();
                                }
                        }
                );
                 Botonsin[0].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"1");
                                        activaRetroceso();
                                }
                        }
                );
                 Botonsin[1].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"2");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[2].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"3");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[3].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"4");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[4].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"5");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[5].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"6");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[6].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"7");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[7].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"8");
                                        activaRetroceso();
                                }
                        }
                );
                Botonsin[8].addActionListener(new ActionListener()
                    {
                                public void actionPerformed(ActionEvent e)
                                {
                                        salida.setText(salida.getText()+"9");
                                        activaRetroceso();
                                }
                        }
                );
                bretroceso.addActionListener(new ActionListener()///////
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                String xxx=salida.getText();
                                  if(xxx=="")
                                    {
                                   // System.out.println("ya no hay nada");
                                    }
                                if(xxx!="")
                                {
                                        xxx=xxx.substring(0,xxx.length()-1);
                                        salida.setText(xxx);
                                        //System.out.println(""+xxx);
                                }
                        }
                }
                );
                 ac.addActionListener(new ActionListener()///////
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                String xxx=salida.getText();
                                  if(xxx=="")
                                    {
                                   // System.out.println("ya no hay nada");
                                    }
                                if(xxx!="")
                                {
                                        //xxx=xxx.substring(0,xxx.length()-1);
                                    xxx="";
                                        salida.setText(xxx);
                                        //System.out.println(""+xxx);
                                }
                        }
                }
                );
               
       
bigual.addActionListener(new ActionListener()////////////////////////////////////
////////////
        {
                                public void actionPerformed(ActionEvent e)
                                {
                                    String dos=salida.getText();
                                        //uno("(5+3)*(2+3)");
                                   // String uno=uno(dos);
                                        
                                            //uno(dos);
                                            salida.setText("");
                                        salida.setText(salida.getText()
+""+uno(dos));
                                     //System.out.println(""+uno);
                                        activaRetroceso();
                                }
                        }
                );
                
                parenDerecho.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"(");
                                        activaRetroceso();
                                }
                        }
                );
                parenIzquierdo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+")");
                                        activaRetroceso();
                                }
                        }
                );
                //bmas
               bmas.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"+");
                                        activaRetroceso();
                                }
                        }
                );
                multi.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"*");
                                        activaRetroceso();
                                }
                        }
                );
                div.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"/");
                                        activaRetroceso();
                                }
                        }
                );
                punto.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+".");
                                        activaRetroceso();
                                }
                        }
                );
                //modulo,potencia;
                modulo.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"%");
                                        activaRetroceso();
                                }
                        }
                );
                potencia.addActionListener(new ActionListener(){
                                public void actionPerformed(ActionEvent e)
                                {
                                    String uno=salida.getText();
                                        salida.setText(salida.getText()+"^");
                                        activaRetroceso();
                                }
                        }
                );
      }// fin del costructor
    public void activaRetroceso()
    {
        if(!(salida.getText().equals("")))
            {
                bretroceso.setEnabled(true);
                ac.setEnabled(true);
                }
        else
                bretroceso.setEnabled(false);
    }
    public static void main (String []args)
    {
        once Ventana= new once();
       Ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      //Ventana.setSize(350,300);
      Ventana.setSize(280,380);
       //Ventana.setSize(500,250);
       Ventana.setLocation(505,200);
       Ventana.setVisible(true);
    }
}
‹ Ayuda Pasar datos a otro frame de javacomo conectar una aplicacion midlet en java micro
edition con una base de datos en linea, utilizando netbeans. ›

 Inicie sesión o regístrese para enviar comentarios

Opciones de visualización de comentarios

También podría gustarte