Autor Tema: ejemplo calculadora java con interfaz gráfica GUI ActionListener actionPerformed  (Leído 23484 veces)

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Hola a todos, estoy empezando en este mundo de Java y tengo una duda sobre un
problema que no me funciona como quiero...basicamente he hecho una calculadora pero solo tengo activadas las teclas suma,resta y "="...basicamente lo que quiero es que al restar lo haga correctamente
 
Mi intencion es que si hago la resta:
       
        -Si resto 0-3 de resultado -3
       
        -Si resto 5-2 de resultado 3
       
        -Si hago 3+2-1 de resultado 4
       
        Ahora mismo los resulados son correcto excepto si resto 0 por un numero..que me da un resultado positivo, en lugar de negativo o tambien ocurre lo mismo si hago 2-2-1-->ya que es 2-2=0 y 0 -un numero me ocurre ese fallo
      
Estaria muy agradecido si alguien me puede dar una solución para que al restar de cualquier manera, me salga correctamente,sé por qué me falla, pero No tengo una solución para que al restar 0 menos un numero salga correctamente
         
      
Código: [Seleccionar]

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

public class RestaSuma implements ActionListener{

Calculadora ca;

String texto;
static String signo;
static double acumulador=0;

public RestaSuma(Calculadora calcul){

ca=calcul;

}

public boolean existePunto(String cadena){  //Metodo que comprueba si existe un punto en los caracteres introducidos
boolean resultado=false;

for(int i=0;i<cadena.length();i++){

if(cadena.substring(i, i+1).equals(".")){
resultado=true;
break;
}


}
return resultado;

}



public void signoMetodo(String signo){

if(signo.equals("+")){

texto=ca.campo.getText();

acumulador=acumulador+Double.parseDouble(texto);
//¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡EL FALLO ESTÁ AQUI!!!!!!!!!!!!!!!!!!!!!!!!!!!

/*Mi intencion es que si hago la resta:
*
* -Si resto 0-3 de resultado -3
*
* -Si resto 5-2 de resultado 3
*
* -Si hago 3+2-1 de resultado 4
*
*
* Ahora mismo los resulados son correcto excepto si resto 0 por un numero..me da un resultado positivo,
* en lugar de negativo o tambien ocurre lo mismo si hago 2-2-1-->ya que es 2-2=0 y 0 -un numero me ocurre ese fallo
*


*
*
*/
}else if(signo.equals("-")){

texto=ca.campo.getText();

if(acumulador!=0){

acumulador=acumulador-Double.parseDouble(texto);

}else if(acumulador==0){
double acumulador1=Double.parseDouble(texto);
acumulador=acumulador1-acumulador*-1;

}
}
}


@Override
public void actionPerformed(ActionEvent ev) {

String comando=ev.getActionCommand();

if(comando.equals("1")){

ca.campo.setText(ca.campo.getText()+"1"); //Lo hago de esta manera para que al pulsar
//un numero, el numero que ya estaba en el campo de texto se mantenga

}else if(comando.equals("2")){

ca.campo.setText(ca.campo.getText()+"2");

}else if(comando.equals("3")){

ca.campo.setText(ca.campo.getText()+"3");

}else if(comando.equals("4")){

ca.campo.setText(ca.campo.getText()+"4");

}else if(comando.equals("5")){

ca.campo.setText(ca.campo.getText()+"5");

}else if(comando.equals("6")){

ca.campo.setText(ca.campo.getText()+"6");

}else if(comando.equals("7")){

ca.campo.setText(ca.campo.getText()+"7");

}else if(comando.equals("8")){

ca.campo.setText(ca.campo.getText()+"8");

}else if(comando.equals("9")){

ca.campo.setText(ca.campo.getText()+"9");

}else if(comando.equals("0")){

ca.campo.setText(ca.campo.getText()+"0");

}else if(comando.equals("<==")){ //Aqui borro el ultimo caracter escrito

String cadena=ca.campo.getText();

if(cadena.length()>0){

ca.campo.setText(cadena.substring(0,(cadena.length()-1)));//Con esto lo que hace
//es escribir la cadena desde 0 hasta la longitud de la cadena-1, o sea
//no escribe el ultimo valor, o sea aparentemente borra el ultimo valor


}

}else if(comando.equals(",")){

if(ca.campo.getText().equals("")){
ca.campo.setText("0.");
} else{

if(!existePunto(ca.campo.getText())){
/*el metodo "existePunto" devuelve "true" en caso de existir un punto, si no existe
* entonces escribe el punto
*/

ca.campo.setText(ca.campo.getText()+",");

}
}


}else if(comando.equals("C")){
ca.campo.setText("");
ca.campo1.setText("");
acumulador=0;
}


if(comando.equals("+")){
if(signo==null){
signo="+"; //Esto del "signo" lo hago para así poder continuar sumando o restando a
//una operación ya hecha...por ejemplo si he puesto "5-3"..y quisiera sumarle +4..
//..o sea 5-3+4, al hacerlo de esta manera me funciona correctamente, si no lo hiciera así
//entonces me daría un error...si

//Por ejemplo:
/*empiezo una operación:  5+3..antes de empezar signo=null, despues signo="+"
* y hago la operación 5+3..al terminarla "signo=+"...
*
* continuo la operacion: resto 2 al resultado....o sea 5+3-2
*
* en ese momento el signo actual es "+", pero al pulsar "-" el signo actual pasa a "-"
* y realizo la resta..
*
* Si no lo hiciera de esta manera al hacer una operacion con dos signos diferentes, entonces
* no me la haria correctamente...si pusiera 5+3 y despues "-"2,al pulsar el "-" automaticamente
* me restaría 5-3....ASI QUE ESTA MANERA ES UNA SOLUCION QUE HE ENCONTRADO A ESE PROBLEMA...
* ..PERO IGUALMENTE AQUI NO ESTÁ MI DUDA.
*

*
*
*/


}
signoMetodo(signo);

if(!ca.campo.getText().equals("")){  //Si hay algo escrito en el campo de texto "campo", entonces
//escribe el acumulador en el "campo1" y borra "campo"...(el acumulador ya se ha calculado
//con el metodo "signoMetodo(signo);")


String text;


text=Double.toString(acumulador);
ca.campo.setText("");
ca.campo1.setText(text);
signo="+";
}


}else if(comando.equals("-")){

if(signo==null){
signo="-";
}

signoMetodo(signo);

if(!ca.campo.getText().equals("")){
String text;
text=Double.toString(acumulador);


ca.campo.setText("");
ca.campo1.setText(text);
signo="-";

}

}else if(comando.equals("=")){

if(signo==null){

}

signoMetodo(signo);
if(!ca.campo.getText().equals("")){

String text;

text=Double.toString(acumulador);
ca.campo.setText("");
ca.campo1.setText(text);
acumulador=0;
}
}
}
}





Código: [Seleccionar]

import javax.swing.*;
import java.awt.*;

public class Calculadora extends JFrame{

JPanel principal;
JPanel arriba;
JPanel medio;
JPanel izq;
JPanel der;
JPanel abajo;
JTextField campo;
JTextField campo1;


CalculadoraEventos eventos=new CalculadoraEventos(this);

public Calculadora(){
super("Calculadora");
setSize(400,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Panel principal
principal=new JPanel();

BoxLayout todo=new BoxLayout(principal,BoxLayout.Y_AXIS);
principal.setLayout(todo);

//Primer Panel
arriba=new JPanel();

campo=new JTextField(30);
//campo.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); -->Hace que el cursor esté
//en el campo de texto en el lado derecho en lugar del izquierdo

campo1=new JTextField(30);
campo1.setEditable(false);

arriba.add(campo);
arriba.add(campo1);


//Panel Medio
medio=new JPanel();
medio.setLayout(new GridLayout(1,2,10,10));

//Panel izquierda

izq=new JPanel();
izq.setLayout(new GridLayout(4,3,5,5));

JButton num1=new JButton("1");
JButton num2=new JButton("2");
JButton num3=new JButton("3");
JButton num4=new JButton("4");
JButton num5=new JButton("5");
JButton num6=new JButton("6");
JButton num7=new JButton("7");
JButton num8=new JButton("8");
JButton num9=new JButton("9");
JButton num0=new JButton("0");
JButton coma=new JButton(",");

num1.addActionListener(eventos);
num2.addActionListener(eventos);
num3.addActionListener(eventos);
num4.addActionListener(eventos);
num5.addActionListener(eventos);
num6.addActionListener(eventos);
num7.addActionListener(eventos);
num8.addActionListener(eventos);
num9.addActionListener(eventos);
num0.addActionListener(eventos);
coma.addActionListener(eventos);

izq.add(num1);
izq.add(num2);
izq.add(num3);
izq.add(num4);
izq.add(num5);
izq.add(num6);
izq.add(num7);
izq.add(num8);
izq.add(num9);
izq.add(num0);
izq.add(coma);


//Panel derecha
der=new JPanel();
der=new JPanel();
der.setLayout(new GridLayout(4,3,5,5));

JButton mas=new JButton("+");
JButton menos=new JButton("-");
JButton mult=new JButton("*");
JButton div=new JButton("/");
JButton igual=new JButton("=");
JButton c=new JButton("C");
JButton flecha=new JButton("<==");

mas.addActionListener(eventos);
menos.addActionListener(eventos);
mult.addActionListener(eventos);
div.addActionListener(eventos);
igual.addActionListener(eventos);
c.addActionListener(eventos);
flecha.addActionListener(eventos);

der.add(mas);
der.add(menos);
der.add(mult);
der.add(div);
der.add(igual);
der.add(c);
der.add(flecha);

medio.add(izq);
medio.add(der);

//Panel abajo

abajo=new JPanel();


principal.add(arriba);
principal.add(medio);
principal.add(abajo);

add(principal);
setVisible(true);

}

public static void main(String[]args){

Calculadora cal=new Calculadora();

}
}

« Última modificación: 16 de Julio 2015, 12:23 por Alex Rodríguez »

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:calculadora java con GUI fallo al restar
« Respuesta #1 en: 03 de Julio 2015, 17:26 »
CalculadoraEventos eventos=new CalculadoraEventos(this);

No me carga esta linea. Para poder probarlo. Porque en principio si haces un getText te devuelve un string y deberias poder pasarlo a double o float sin problema aunque tenga un - delante.

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #2 en: 04 de Julio 2015, 00:47 »
Hola Lorenzo31,tienes razón es un fallo...esa linea debe ser "RestaSuma eventos=new RestaSuma(this);" en lugar de "CalculadoraEventos eventos=new CalculadoraEventos(this);"....en realidad originalmente tengo 2 clases hechas para este programa, uno "CalculadoraEventos" y otra "Calculadora"...pero para poner un codigo mas corto en este foro, he creado una clase "RestaSuma" (con las dudas que tenia)en lugar de CalculadoraEventos, por eso me dejé esa linea, espero no haberme dejado nada más

o sea si no me he dejado nada más debería quedar:
 
Código: [Seleccionar]
import javax.swing.*;

import java.awt.*;

public class Calculadora extends JFrame{

JPanel principal;

JPanel arriba;

JPanel medio;
JPanel izq;
JPanel der;

JPanel abajo;
JTextField campo;
JTextField campo1;



RestaSuma eventos=new RestaSuma(this);

public Calculadora(){



super("Calculadora");

setSize(400,500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//Panel principal
principal=new JPanel();

BoxLayout todo=new BoxLayout(principal,BoxLayout.Y_AXIS);
principal.setLayout(todo);



//Primer Panel
arriba=new JPanel();

campo=new JTextField(30);
//campo.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); -->Hace que el cursor esté
//en el campo de texto en el lado derecho en lugar del izquierdo


campo1=new JTextField(30);
campo1.setEditable(false);



arriba.add(campo);
arriba.add(campo1);


//Panel Medio

medio=new JPanel();

medio.setLayout(new GridLayout(1,2,10,10));



//Panel izquierda

izq=new JPanel();
izq.setLayout(new GridLayout(4,3,5,5));

JButton num1=new JButton("1");
JButton num2=new JButton("2");
JButton num3=new JButton("3");
JButton num4=new JButton("4");
JButton num5=new JButton("5");
JButton num6=new JButton("6");
JButton num7=new JButton("7");
JButton num8=new JButton("8");
JButton num9=new JButton("9");
JButton num0=new JButton("0");
JButton coma=new JButton(",");

num1.addActionListener(eventos);
num2.addActionListener(eventos);
num3.addActionListener(eventos);
num4.addActionListener(eventos);
num5.addActionListener(eventos);
num6.addActionListener(eventos);
num7.addActionListener(eventos);
num8.addActionListener(eventos);
num9.addActionListener(eventos);
num0.addActionListener(eventos);
coma.addActionListener(eventos);





izq.add(num1);
izq.add(num2);
izq.add(num3);
izq.add(num4);
izq.add(num5);
izq.add(num6);
izq.add(num7);
izq.add(num8);
izq.add(num9);
izq.add(num0);
izq.add(coma);


//Panel derecha
der=new JPanel();
der=new JPanel();
der.setLayout(new GridLayout(4,3,5,5));

JButton mas=new JButton("+");
JButton menos=new JButton("-");
JButton mult=new JButton("*");
JButton div=new JButton("/");
JButton igual=new JButton("=");
JButton c=new JButton("C");
JButton flecha=new JButton("<==");

mas.addActionListener(eventos);
menos.addActionListener(eventos);
mult.addActionListener(eventos);
div.addActionListener(eventos);
igual.addActionListener(eventos);
c.addActionListener(eventos);
flecha.addActionListener(eventos);

der.add(mas);
der.add(menos);
der.add(mult);
der.add(div);
der.add(igual);
der.add(c);
der.add(flecha);

medio.add(izq);
medio.add(der);

//Panel abajo

abajo=new JPanel();


principal.add(arriba);
principal.add(medio);
principal.add(abajo);


add(principal);







setVisible(true);

}

public static void main(String[]args){

Calculadora cal=new Calculadora();



}
}


y la otra clase tal cual, o sea
Código: [Seleccionar]
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;



public class RestaSuma implements ActionListener{

Calculadora ca;

String texto;
static String signo;
static double acumulador=0;

public RestaSuma(Calculadora calcul){

ca=calcul;



}

public boolean existePunto(String cadena){  //Metodo que comprueba si existe un punto en los caracteres introducidos
boolean resultado=false;

for(int i=0;i<cadena.length();i++){

if(cadena.substring(i, i+1).equals(".")){
resultado=true;
break;
}


}
return resultado;

}



public void signoMetodo(String signo){



if(signo.equals("+")){

texto=ca.campo.getText();

acumulador=acumulador+Double.parseDouble(texto);
//¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡EL FALLO ESTÁ AQUI!!!!!!!!!!!!!!!!!!!!!!!!!!!


/*Mi intencion es que si hago la resta:
*
* -Si resto 0-3 de resultado -3
*
* -Si resto 5-2 de resultado 3
*
* -Si hago 3+2-1 de resultado 4
*
*
* Ahora mismo los resulados son correcto excepto si resto 0 por un numero..me da un resultado positivo,
* en lugar de negativo o tambien ocurre lo mismo si hago 2-2-1-->ya que es 2-2=0 y 0 -un numero me ocurre ese fallo
*


*
*
*/
}else if(signo.equals("-")){

texto=ca.campo.getText();

if(acumulador!=0){

acumulador=acumulador-Double.parseDouble(texto);

}else if(acumulador==0){
double acumulador1=Double.parseDouble(texto);
acumulador=acumulador1-acumulador*-1;

}
}
}


@Override
public void actionPerformed(ActionEvent ev) {

String comando=ev.getActionCommand();

if(comando.equals("1")){

ca.campo.setText(ca.campo.getText()+"1"); //Lo hago de esta manera para que al pulsar
//un numero, el numero que ya estaba en el campo de texto se mantenga

}else if(comando.equals("2")){

ca.campo.setText(ca.campo.getText()+"2");

}else if(comando.equals("3")){

ca.campo.setText(ca.campo.getText()+"3");

}else if(comando.equals("4")){

ca.campo.setText(ca.campo.getText()+"4");

}else if(comando.equals("5")){

ca.campo.setText(ca.campo.getText()+"5");

}else if(comando.equals("6")){

ca.campo.setText(ca.campo.getText()+"6");

}else if(comando.equals("7")){

ca.campo.setText(ca.campo.getText()+"7");

}else if(comando.equals("8")){

ca.campo.setText(ca.campo.getText()+"8");

}else if(comando.equals("9")){

ca.campo.setText(ca.campo.getText()+"9");

}else if(comando.equals("0")){

ca.campo.setText(ca.campo.getText()+"0");

}else if(comando.equals("<==")){ //Aqui borro el ultimo caracter escrito

String cadena=ca.campo.getText();

if(cadena.length()>0){

ca.campo.setText(cadena.substring(0,(cadena.length()-1)));//Con esto lo que hace
//es escribir la cadena desde 0 hasta la longitud de la cadena-1, o sea
//no escribe el ultimo valor, o sea aparentemente borra el ultimo valor


}




}else if(comando.equals(",")){

if(ca.campo.getText().equals("")){

ca.campo.setText("0.");


} else{

if(!existePunto(ca.campo.getText())){
/*el metodo "existePunto" devuelve "true" en caso de existir un punto, si no existe
* entonces escribe el punto
*/

ca.campo.setText(ca.campo.getText()+",");

}



}




}else if(comando.equals("C")){
ca.campo.setText("");
ca.campo1.setText("");
acumulador=0;


}


if(comando.equals("+")){

if(signo==null){

signo="+"; //Esto del "signo" lo hago para así poder continuar sumando o restando a
//una operación ya hecha...por ejemplo si he puesto "5-3"..y quisiera sumarle +4..
//..o sea 5-3+4, al hacerlo de esta manera me funciona correctamente, si no lo hiciera así
//entonces me daría un error...si

//Por ejemplo:
/*empiezo una operación:  5+3..antes de empezar signo=null, despues signo="+"
* y hago la operación 5+3..al terminarla "signo=+"...
*
* continuo la operacion: resto 2 al resultado....o sea 5+3-2
*
* en ese momento el signo actual es "+", pero al pulsar "-" el signo actual pasa a "-"
* y realizo la resta..
*
* Si no lo hiciera de esta manera al hacer una operacion con dos signos diferentes, entonces
* no me la haria correctamente...si pusiera 5+3 y despues "-"2,al pulsar el "-" automaticamente
* me restaría 5-3....ASI QUE ESTA MANERA ES UNA SOLUCION QUE HE ENCONTRADO A ESE PROBLEMA...
* ..PERO IGUALMENTE AQUI NO ESTÁ MI DUDA.
*

*
*
*/


}
signoMetodo(signo);

if(!ca.campo.getText().equals("")){  //Si hay algo escrito en el campo de texto "campo", entonces
//escribe el acumulador en el "campo1" y borra "campo"...(el acumulador ya se ha calculado
//con el metodo "signoMetodo(signo);")


String text;


text=Double.toString(acumulador);

ca.campo.setText("");

ca.campo1.setText(text);


signo="+";


}


}else if(comando.equals("-")){

if(signo==null){

signo="-";

}

signoMetodo(signo);

if(!ca.campo.getText().equals("")){


String text;


text=Double.toString(acumulador);



ca.campo.setText("");

ca.campo1.setText(text);


signo="-";





}


}else if(comando.equals("=")){

if(signo==null){



}

signoMetodo(signo);

if(!ca.campo.getText().equals("")){


String text;


text=Double.toString(acumulador);

ca.campo.setText("");

ca.campo1.setText(text);


acumulador=0;


}


}




}
}


caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #3 en: 04 de Julio 2015, 01:20 »
El programa en si no me da error....pero a la hora de restar 0 menos un numero(diferente a cero) en lugar de darme ese numero en negativo, me lo da positivo..sé por que me pasa eso, ya que tengo puesto-->"acumulador=acumulador1-acumulador*-1;"y si por ejemplo hago 0-5, al tenerlo de esta manera  el resultado es normal que me de 5 positivo porque...acumulador=0-5*(-1) -->acumulador=5...PERO si lo modifico y en esa linea escribo-->"acumulador=acumulador-acumulador1;" ahi si me suma correctamente 0 menos un numero, PERO entonces me falla en la resta de 2 numeros enteros normales, osea no me restaria por ejemplo 5-2...o sea hasta ahora, haga lo que haga si soluciono un problema creo otro, y no sé cual puede ser la solución definitiva.

Gracias de antemano por las respuestas.Saludos!

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #4 en: 06 de Julio 2015, 09:23 »
Buenos días luego me miro el código y a ver si puedo ayudarte en algo, en principio por lo que comentas es un problema de formulas matematicas más que de programación, es encontrar la formula adecuada. Luego a la noche te comento ;)

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #5 en: 06 de Julio 2015, 19:40 »
Muchas gracias Lorenzo,  te lo agradezco mucho

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #6 en: 08 de Julio 2015, 01:51 »
Buenas caludo, iba a hacertelo yo pero es bastante tarde. Así que te digo lo que ocurre.

Hay un problema de planteamiento, al usar el acumulador cuando clican el signo.

Lo que se deberia hacer, es lo siguiente, el primer numero que se introduce en la calculadora, por ejemplo 5, se iguala al acumulador, a partir de ahi, cuando se oprime signo -  haces el bucle de acumular.

Sería un condicional usando un boolean true false por si aun no han entrado ninguna vez, tal que así;

if(primerNumeroIntroducido) { acumulador = Double.parseDouble(ca.campo.getText()); }
else {
         
     if(signo.equals("-")){
         
      acumulador=acumulador-Double.parseDouble(ca.campo.getText());
   
      
   }

Más o menos creo que se entiende, un semaforo que te garantiza si es la primera vez que se introduce una cifra. Si es asi igualas al acumulador, segunda vez ya restas o sumas o multiplicas o divides. ;)

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #7 en: 09 de Julio 2015, 01:05 »
Muchisimas gracias Lorenzo, lo probaré a ver que tal va, mañana te respondo por aqui..una vez más muchisimas gracias por tu ayuda y por tu tiempo. Saludos!!

PS. En realidad no buscaba que alguien me hiciese el ejercicio, buscaba una explicación a la posible solución, así que me has ayudado muchisimo, más de lo que esperaba ;)

Lorenzo31

  • Avanzado
  • ****
  • APR2.COM
  • Mensajes: 381
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #8 en: 09 de Julio 2015, 15:20 »
De nada caludo, te amplio la información, despues de meditar, para que tengas opciones, tu acumulabas ( es decir operas ) al oprimir el signo +,- ... etc.

Lo que yo te propongo (pues el fallo en como tu lo haces es que el primer numero debe igualarse al acumulador) es que;

primer numero = acumulador
String signo = signo clicado
Y la operación de acumular, la hagas en el siguiente numero oprimido.
algo así
Código: [Seleccionar]

if ( acumulador == 0 ) { acumulador = Double.parseDouble(ca.campo.getText()); }
String signo = ca.signo.getText();
 //(aquí debería coger cualquier boton que tenga signo) en un ActionListener con el evento click de cada boton de signo

// y al oprimir el siguiente numero, al no cumplirse (acumulador = 0) , ahí haces

else {  if (signo.equals("-"){ acumulador = acumulador - Double.parseDouble(ca.campo.getText()); }
   if (signo.equals("+") ....
   if signo.equals("*") ....
}


« Última modificación: 09 de Julio 2015, 15:22 por Lorenzo31 »

caludo

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 33
    • Ver Perfil
Re:ejemplo calculadora java con interfaz gráfica GUI fallo al restar
« Respuesta #9 en: 12 de Julio 2015, 00:44 »
Muchisimas gracias una vez más Lorenzo, no he podido responder antes porque he tenido un pequeño problema con la conexion a internet.Me queda un mundo por aprender pero seguramente con gente como tu será mucho más facil ;) Gracias una vez más y saludos!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".