Mas Ayuda

Que hubo hermano!
Hice lo que me dijiste en el applet de la calculadora y la verdad mejoró mucho lo que hace el applet, todavia estoy trabajandole a detalles, pero donde mas estoy pegado es para convertir el text de un numero con punto en double, ejemplo yo ingreso en el texto 12.5; si esto es string(por que está en un campo de texto) necesito saber como lo paso a double para poder realizar las operaciones como en una calculadora normal, ya le mandé el punto al cuadro de texto pero cuando le oprimo otro numero para que quede despues de la coma me saca una excepcion que es : NumberFormatException: For Input String: "12.5" Obviamente es por que estoy queriendo pasarlo a double y no me reconoce la coma; Entonces como hago.
De antemano gracias de nuevo y te pego el codigo como va.
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.lang.*;
// <applet width="400" height="400" code="AppletCalculadora"></applet>
public class AppletCalculadora extends Applet implements ActionListener{
Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18;
TextField t1;
Panel pan2;
double num1 = 0.0;
double num2 = 0.0;
double num3 = 0.0;
String ultOper = "";
int punto = 0;
//String operador = "";
//String total = "";
public AppletCalculadora() {
setLayout(new BorderLayout());
Panel pan2 = new Panel();
t1 = new TextField();
add("North",t1);
add("Center",pan2);
pan2.setLayout(new GridLayout(6, 3, 10, 10));
b1 = new Button("1");
b2 = new Button("2");
b3 = new Button("3");
b4 = new Button("4");
b5 = new Button("5");
b6 = new Button("6");
b7 = new Button("7");
b8 = new Button("8");
b9 = new Button("9");
b10 = new Button(".");
b11 = new Button("0");
b12 = new Button("CE");
b13 = new Button("+");
b14 = new Button("-");
b15 = new Button("=");
b16 = new Button("*");
b17 = new Button("/");
b18 = new Button("C");
pan2.add(b1);
pan2.add(b2);
pan2.add(b3);
pan2.add(b4);
pan2.add(b5);
pan2.add(b6);
pan2.add(b7);
pan2.add(b8);
pan2.add(b9);
pan2.add(b10);
pan2.add(b11);
pan2.add(b12);
pan2.add(b13);
pan2.add(b14);
pan2.add(b15);
pan2.add(b16);
pan2.add(b17);
pan2.add(b18);
b1. AddActionListener(this);
b2. AddActionListener(this); // Se da la facultad a los botones de
b3. AddActionListener(this); // poder ser escuchados
b4. AddActionListener(this);
b5. AddActionListener(this);
b6. AddActionListener(this);
b7. AddActionListener(this);
b8. AddActionListener(this);
b9. AddActionListener(this);
b10. AddActionListener(this);
b11. AddActionListener(this);
b12. AddActionListener(this);
b13. AddActionListener(this);
b14. AddActionListener(this);
b15. AddActionListener(this);
b16. AddActionListener(this);
b17. AddActionListener(this);
b18. AddActionListener(this);
}
public void actionPerformed(ActionEvent ae) {
//String cadena = new String();
// String uloper="";
if ((ae.getActionCommand() == "1") || (ae.getActionCommand() == "0") ||
(ae.getActionCommand() == "2") || (ae.getActionCommand() == "3") ||
(ae.getActionCommand() == "4") || (ae.getActionCommand() == "5") ||
(ae.getActionCommand() == "6") || (ae.getActionCommand() == "7")||
(ae.getActionCommand() == "8") || (ae.getActionCommand() == "9"))
{
// num2 = num1;
if (ae.getActionCommand() == "0")
{
if (num1 == 0)
{
t1.setText("");
}
else{
t1.setText("" + t1.getText() + ae.getActionCommand());
num1 = Integer.parseInt(t1.getText());
//cadena = t1.getText();
}
}
else {
t1.setText("" + t1.getText() + ae.getActionCommand());
num1 = Integer.parseInt(t1.getText());
//cadena = t1.getText();
}
//ae.getActionCommand();
}
// fin del mientras
//String operador = "";
if(ae.getActionCommand() == "+"){
punto = 0;
if (num2 != 0)
{
num2 = num2 + num1;
t1.setText("");
//num3 = num2;
num1 = 0;
ultOper = "+";
//cadena = "";
}
else{
//num3 = num2;
num2 = num1;
t1.setText("");
num1 = 0;
ultOper = "+";
}
}
if(ae.getActionCommand() == "-"){
punto = 0;
if (num2 != 0)
{
num2 = num2 - num1;
t1.setText("");
//num3 = num2;
num1 = 0;
ultOper = "-";
//cadena = "";
}
else{
//num3 = num2;
num2 = num1;
t1.setText("");
num1 = 0;
ultOper = "-";
}
//operador =ae.getActionCommand();
}
if(ae.getActionCommand() == "*"){
punto = 0;
if ((num2 != 0)&&(num1 != 0))
{
num2 = num2 * num1;
t1.setText("");
//num3 = num2;
num1 = 0;
ultOper = "*";
//cadena = "";
}
else if(num1 == 0)
{
num2 = num2;
t1.setText("");
ultOper = "*";
}
else{
//num3 = num2;
num2 = num1;
t1.setText("");
num1 = 0;
ultOper = "*";
}
//operador =ae.getActionCommand();
}
if(ae.getActionCommand() == "/"){
punto = 0;
if (num2 != 0)
{
num2 = num2 / num1;
t1.setText("");
//num3 = num2;
num1 = 0;
ultOper = "/";
//cadena = "";
}
else{
//num3 = num2;
num2 = num1;
t1.setText("");
num1 = 0;
ultOper = "/";
}
//operador =ae.getActionCommand();
}
//String uloper2 = uloper;
if(ae.getActionCommand() == "=")
{
punto = 0;
if(ultOper == "+")
{
num3 = Double.parseDouble(t1.getText());
t1.setText("" + (num2 + num3));
num2 = Double.parseDouble(t1.getText());
num1 = 0;
}
if(ultOper == "-")
{
num3 = Double.parseDouble(t1.getText());
t1.setText("" + (num2 - num3));
num2 = Double.parseDouble(t1.getText());
num1=0;
}
if(ultOper == "*")
{
num3 = Double.parseDouble(t1.getText());
t1.setText("" + (num2 * num3));
num2 = Double.parseDouble(t1.getText());
num1 = 0;
}
if(ultOper == "/")
{
num3 = Double.parseDouble(t1.getText());
t1.setText("" + (num2 / num3));
num2 = Double.parseDouble(t1.getText());
num1=0;
}
}
if(ae.getActionCommand() == ".")
{
if (punto == 0){
t1.setText("" + t1.getText()+".");
punto = 1;
}
}
if(ae.getActionCommand() == "CE")
{
punto = 0;
t1.setText("");
num1 = 0;
}
if(ae.getActionCommand() == "C")
{
punto = 0;
t1.setText("");
num1 = 0;
num2 = 0;
num3 = 0;
ultOper = "";
}
// } */
} // fin del metodo actionPerformed
} // fin de la clase

1 Respuesta

Respuesta
1
Me alegro que te sirviera de ayuda lo que te comenté en el correo anterior. En cuanto a la excepcion que me cuentas, supongo que tienes la configuracion de la máquina en inglés, es decir, que el punto (.) Es para el separador de miles y la coma (,) para los decimales y por eso te salta la excepcion, ya que he realizado una prueba y a mi me lo parsea bien.
Si eso, antes de hacer el parse a un double, reemplaza el punto por una coma con la instruccion replace:
Double.parseDouble(t1.getText().replace(".",","));
A ver si te funciona con este simple cambio.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas