Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2013, 08:25
Avatar de methos90
methos90
 
Fecha de Ingreso: abril-2011
Ubicación: Cancun;Quintana Roo
Mensajes: 1
Antigüedad: 13 años
Puntos: 0
Pregunta Tomar simbolo desde Array y convertirlo a Operador

Hola, buenos días a todos. Antes de pasar a la pregunta, les agradecería si me dijeran si esta bien colocado este tema aquí y si hay algún tipo de problema con el formato o similares para poder corregirlo en caso de ser necesario. Gracias.

Recientemente comencé a practicar mi programación en Java y para ello decidí empezar programando una simple calculadora con una pequeña GUI. Las operaciones a realizar se escriben en un JTextField y después dando clic en un JButton se calculan todas las operaciones.

Para ello primero fragmente cada numero introducido guardándolo en un ArrayList, y después hice la misma operación para los símbolos matemáticos introducidos, para esto utilice StringTokenizer.

Entonces mi duda como lo dice en el titulo es ¿Se puede tomar uno de los símbolos matemáticos(+, -, *, /)en el segundo ArrayList y colocarlo después del primer numero (transformado a Double) para guardar el resultado de la operación en una variable?

Por ejemplo:

Si yo introduzco "1+2-3*4/1" en el JTextField. El ArrayList me queda así: [1, 2, 3, 4, 1]

Después el segundo ArrayList me quedaría así: [+, -, *, /]

Entonces el resultado lo guardo en una variable 'res' de tipo Double, pero aqui es donde no se que hacer

res = Double.parseDouble(a.get(0)) ??? <--- Aqui quiero colocar el primer simbolo del ArrayList pero en forma de operador, no de texto.

Si es de alguna importancia les dejo el codigo completo. Muchas Gracias de antemano.

Código Java:
Ver original
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4. import java.util.ArrayList;
  5. import java.util.StringTokenizer;
  6.  
  7. public class calculadora extends JFrame{
  8.    
  9.             //Botones
  10.             JButton b1 = new JButton("Enter");
  11.             //Etiquetas
  12.             JLabel l1 = new JLabel("Calculadora JAVA"),
  13.                         l2 = new JLabel("Resultado"), l3 = new JLabel("");
  14.             //Area de Texto
  15.             JTextField t1 = new JTextField(10);
  16.    
  17.     public calculadora(){
  18.         super("Calculadora Java");
  19.         //Caracteristicas Ventana
  20.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  21.         setSize(400, 200);
  22.         setLayout(new GridLayout(3,2));
  23.         setVisible(true);
  24.         //Caracteristicas Componentes
  25.        
  26.         //Agregar Componentes
  27.         b1.addActionListener(bl);
  28.         add(l1);
  29.         add(t1);
  30.         add(b1);
  31.         add(l2);
  32.         add(l3);
  33.     }
  34.    
  35.     //Escucha de Eventos
  36.     class ButtonListener implements ActionListener{
  37.  
  38.         @Override
  39.         public void actionPerformed(ActionEvent e) {
  40.             // TODO Auto-generated method stub
  41.  
  42.             //Se crea array para contener las cifras
  43.             ArrayList<String> a = new ArrayList<String>();
  44.  
  45.                         //Tomo cada uno de los numeros en el JTextField
  46.             StringTokenizer token = new StringTokenizer(t1.getText(),"+-*/");
  47.                        
  48.                         //Agrego los numeros al ArrayList
  49.             while(token.hasMoreTokens()){
  50.                 a.add(token.nextToken());
  51.                 System.out.println("Array: " + a);
  52.             }
  53.  
  54.                         //Array para contener los simbolos
  55.             ArrayList<String> s = new ArrayList<String>();
  56.                        
  57.                         //Tomo cada simbolo
  58.             StringTokenizer simbol =
  59.                         new StringTokenizer(t1.getText(),"0123456789");
  60.  
  61.             while(simbol.hasMoreTokens()){
  62.                
  63.                 s.add(simbol.nextToken());
  64.  
  65.                                 //Imprimo el ArrayList de los simbolos en la consola
  66.                 System.out.println("Simbolos: " + s);
  67.                
  68.             }
  69.            
  70.                         //Variable para el indice en los Array
  71.             int index = 0, i;
  72.                         //Variable para resultado
  73.             double res;
  74.  
  75.             for(i = 0;i<=a.size();i++){
  76.                
  77.                 res = Double.parseDouble(a.get(index)) <--- Aqui la duda, como colocar el simbolo del Array en forma de operador.
  78.                 }
  79.                
  80.             }
  81.            
  82.            
  83.         }
  84.        
  85.    
  86.     public ButtonListener bl = new ButtonListener();
  87.     public static calculadora x;
  88.    
  89.     //Hebra Principal
  90.     public static void main(String[] args){
  91.         //Llamada a Metodo de Creacion de Ventana
  92.         SwingUtilities.invokeLater(new Runnable(){
  93.            
  94.             public void run(){
  95.                 x = new calculadora();
  96.             }
  97.            
  98.         });
  99.        
  100.     }
  101. }