Problema con java.

Veran, tengo un cuadro de texto, al que llamaremos "nUno" y un JButton al que llamaremos "resolver".

Lo que quiero hacer, es que al pulsar el JButton, se comprueve si nUno no tiene valor para, que si se cumple, se agan unos calculos. Aqui les pongo el codigo que prove, pero no funciono.

 

Edito, el codigo completo:

Esto es lo que tendría que hacer al clicar el boton Resolver:

int varNDos, varNUno, varDuno, varDDos;
varNDos=Integer.parseInt(nDos.getText());
varNUno=Integer.parseInt(nUno.getText());
varDUno=Integer.parseInt(dUno.getText());
varDDos=Integer.parseInt(dDos.getText());
 
if(varNDos==null){
int varNDn=varNDn=(varNUno*varDUno)/varDDos;
nDos.setText(Integer.toString(varNDn));
}
if(varNUno==null){
int varNUn=varDUno/(varNDos*varDDos);
nUno.setText(Integer.toString(varNUn));
}
if(varDUno==null){
int varDUn=varNUno/(varNDos*varDDos);
dUno.setText(Integer.toString(varDUn));
}
if(varDDos==null){
int varDDn=(varNUno*varDUno)/varNDos);
dDos.setText(Integer.toString(varDDn));
}

Depues pense en que si una varNDos=null, no me dejaría pasarlo a int, asi que aqui tendría que usar mas "try{}" ¿No?

 

Si pudiesen corregirme el codigo...

Muchas gracias.


  • ABEL


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de abelreyes

He aqui el codigo que utilize

He aqui el codigo que utilize al final, no es exactamente lo que buscava, pero servira.

String varNDos, varNUno, varDUno, varDDos;
varNDos=nDos.getText();
varNUno=nUno.getText();
varDUno=dUno.getText();
varDDos=dDos.getText();
if(Integer.parseInt(varNDos)==0){
    try{
int varNUnoInt=Integer.parseInt(nUno.getText());
int varDUnoInt=Integer.parseInt(dUno.getText());
int varDDosInt=Integer.parseInt(dDos.getText());
int varNDn=(varNUnoInt*varDUnoInt)/varDDosInt;
nDos.setText(Integer.toString(varNDn));
    }
    catch(Exception e){
        JOptionPane.showMessageDialog(this, "No introduzca letras");
    }
}
if(Integer.parseInt(varNUno)==0){
    try{
int varNDosInt=Integer.parseInt(nDos.getText());
int varDUnoInt=Integer.parseInt(dUno.getText());
int varDDosInt=Integer.parseInt(dDos.getText());
int varNUn=varDUnoInt/(varNDosInt*varDDosInt);
nUno.setText(Integer.toString(varNUn));
    }catch(Exception e){
        JOptionPane.showMessageDialog(this, "No introduzca letras");
    }
}
 
if(Integer.parseInt(varDUno)==0){
try{
int varNDosInt=Integer.parseInt(nDos.getText());
int varNUnoInt=Integer.parseInt(nUno.getText());
int varDDosInt=Integer.parseInt(dDos.getText());
int varDUn=varNUnoInt/(varNDosInt*varDDosInt);
dUno.setText(Integer.toString(varDUn));
}catch(Exception e){
        JOptionPane.showMessageDialog(this, "No introduzca letras");
    }
}
if(Integer.parseInt(varDDos)==0){
try{
int varNDosInt=Integer.parseInt(nDos.getText());
int varNUnoInt=Integer.parseInt(nUno.getText());
int varDUnoInt=Integer.parseInt(dUno.getText());
int varDDn=(varNUnoInt*varDUnoInt)/varNDosInt;
dDos.setText(Integer.toString(varDDn));
}catch(Exception e){
        JOptionPane.showMessageDialog(this, "No introduzca letras");
}
}

Ahora el dato que utilizara para saber que debe calcular es que "nUno=0" (Por ejemplo)


  • ABEL

Imagen de pspgorrister

No hace falta que pongas las

No hace falta que pongas las mismas operaciones 4 veces. ese código se puede hacer con un sólo try/catch y ningún "if".

Ánimo, que casi lo tienes ( te sobra el 75% de código, pero vas bien)


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de abelreyes

Jaja, me gusta complicarme la

Jaja, me gusta complicarme la vida, si vieses como me ha quedado al final, me metes un tiro entre las cejas... xD

He puesto al menos 1o try{} catch(){} mas y he cambiado todos los "int" por "double", ya que las formulas dan infinidad de decimales.

Pero cumple la funcion que yo quería, que es lo que importa.

 


  • ABEL

Imagen de Loopin

Bueno, con el tiempo iras

Bueno, con el tiempo iras puliendo tu codigo, solo tienes que tener claro lo que quieras hacer, y CÓMO lo vayas a hacer, esto ultimo es muy importante. Suerte en tu camino!

Un saludo ;)


Imagen de abelreyes

Pues la funcion del programa

Pues la funcion del programa es basicamente llevar a cabo esta formula:

n2/n1=d1/d2

Es una formula para aberiguar la velocidad o el tamaño de "poleas" mecanicas.
Osea, la funcion del programa es aislar la incognita.

He pensado que en vez de hacer un "if(nDos=nul)l" podría hacer "if(nDos="n2)"; (Que seria el texto que devería poner en el cuadro de texto desde el principio del programa.


  • ABEL

Imagen de abelreyes

Esque la verdad que tengo un

Esque la verdad que tengo un lenguaje en java muy limitado todavia... Vosotros  hablais de esto tranquilamente y yo me quedo igual... xD

¿Alguein podría pasarme solo ese trozo de codigo bien redactado, de manera que no de errores?

Gracias !


  • ABEL

Imagen de Loopin

No entiendo qué es lo que

No entiendo qué es lo que tiene que hacer tu programa. Explícamelo al menos, comenta cada linea, para qué es cada if, para qué es cada variable, los componentes de tu GUI.


Imagen de pspgorrister

Menudo lio tienes con el null

El error es que el planteamiento es incorrecto, no es corregir una linea, es cambiar todo el código, no has entendido en significado de manejar excepciones un un bloque try/catch. mira el código Loopin más abajo. Se trata de evitar tanto if loquesea == null. ¿Que pasaría si tuvieras 20 variables?. ¿20 if variableX == null?

Un saludo.


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de abelreyes

Gracias por las respuestas,

Gracias por las respuestas, pero creo que lo de Try no me sirve. Porque no necesito que lo prueve "try", si no que lo consiga ! xD

Mi verdadera duda era el porque al decir "if(nUno==null)", porque neecsito que cuando el cuadro de texto "nUno" esté vacio ejecute los calculos necesarios.
Osea, lo del try puede ser muy util para excepciones como la de introducir una letra y intentar convertirlo a int, pero no resuelve mi problema.

Aver si alguien puede solucionarmelo.

(Tengo el codigo completo escrito en una hoja de papel, si lo encuentro lo cuelgo aqui)


  • ABEL

Imagen de Loopin

Creo que no has entendido el

Creo que no has entendido el funcionamiento del try - catch... Te recomiendo que nos pongas todo el codigo para entender que es lo que hace tu programa exactamente y guiarte un poco mejor.

Un saludo.


Imagen de abelreyes

Lo he estado revisando, y si,

Lo he estado revisando, y si, fallo mio, no lei el codigo completo.
Vale, voy a intentar subir todo el codigo, permaneced atentos.

Imagen de Loopin

Doy por hecho que nDos, y

Doy por hecho que nDos, y dUno son text fields o text area. El metodo getText() te devuelve un objeto String, que mediante el metodo parser de la clase Integer, estas convirtiendolo a un tipo entero. Hasta ahi todo bien, pero que pasa si en tu text field metes una letra? Pues que al intentar convertir ese String en un tipo int, se produce una excepcion. Para controlar la excepcion usamos los bloques try{}catch{}, lo cual quiere decir, que intentaremos hacer lo que hay dentro del bloque try, y si no lo conseguimos, capturaremos la excepcion y haremos lo que hay en el catch:

if(nUno==null){
 
//Aqui algo de codigo
try{
     int varNDos=Integer.parseInt(nDos.getText());
 
}catch(Exception e){
     System.out.println("No inserte letras");
 
}
 
 
try{
     int varDUno=Integer.parseInt(dUno.getText());
 
}catch(Exception e){
     System.out.println("No inserte letras");
 
}
 
 
//Y luego con esos datos hace ciertas operaciones que no pondre aqui
 
}

Espero que te sirva, un saludo!


Imagen de pspgorrister

Sí, pero aún así la pregunta

Sí, pero aún así la pregunta sigue estado mal xDD

if(nUno==null){
Imagen de Loopin

Efectivamente. Es que ni

Efectivamente. Es que ni siquiera se esta preguntando por el contenido del campo, sino si no ha sido instanciado. El poco codigo que hay es caotico, pero bueno, dice que esta empezando.

Un saludo.


Imagen de pspgorrister

Estás haciendo mal la

Estás haciendo mal la pregunta, haces los cáculos si nUno es nulo, cuando debería ser al revés.

Imagen de abelreyes

Mm...Creo que no, eso es lo

Mm...Creo que no, eso es lo que quiero conseguir, que cuando nUno no tenga valor, aga las operaciones.
En caso de que nUno tenga algun caracter dentro no devería hacer nada el programa.


  • ABEL

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.