Foros del Web » Programación para mayores de 30 ;) » Java »

PRINCIPIANTE - Perdida de información en variables JAVA

Estas en el tema de PRINCIPIANTE - Perdida de información en variables JAVA en el foro de Java en Foros del Web. Hola Amigos! Hace tiempo que vengo mirando el foro y sacando muchas lineas de código que me sirven para aprender un poco mas de PHP. ...
  #1 (permalink)  
Antiguo 05/06/2012, 15:55
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
PRINCIPIANTE - Perdida de información en variables JAVA

Hola Amigos!

Hace tiempo que vengo mirando el foro y sacando muchas lineas de código que me sirven para aprender un poco mas de PHP.

Pero no quiero caer en el error de encerrarme en un solo lenguaje y no salir de hay. Por ello quiero comenzar a programar JAVA. Estuve leyendo un poco pero hay cosas que en las guías no aparecen.

Por eso ME ENCANTAN estas comunidades en donde todos nos podemos ayudar mutuamente!

Bueno, mi problema es el siguiente, primero les muestro el codigo
Código:
package cursojava.demos; //La encapsulamos en un lugar para todos los demo
import javax.swing.JOptionPane; //Importamos la clase JOptionPane

public class DemoIOJOptionPane {
    String nombre; //Este será la información para el I/O.
    String pedidoNombre; //Este será la cadena que aparecerá papa pedir el nombre.
    String mensajeSaludo; //Esta sera la cadena que mostrara antes del nombre.
    String pideSexo; //Texto a Mostrar para pedir el Sexo de la persona.
    String respuestaSexo; //Respuesta a la pregunta sobre su Sexo
    String sexo; // Varibale en la que se guardará el sexo de la persona.
    
    public DemoIOJOptionPane() {
    	//El constructor llama a sus métodos
    	declaraTextos();
    	preguntaSexo();
    	defineSexo();
    	defineSaludoSegunSexo();
    	pideNombre();
    	muestraSaludo();    	
    }

     private void declaraTextos(){
     	pedidoNombre="¿Cual es su nombre?";
     	pideSexo="Es usted un hombre? Responda con Si o No";
     }
    
    private void defineSexo(){
 	
		if(respuestaSexo=="No"){
			sexo="Femenino";
		}else{
			sexo="Masculino";
		}    	
    } 
    	
    private void defineSaludoSegunSexo(){
    	if(sexo=="Femenino" || sexo=="Masculino"){
    		if(sexo=="Femenino"){
    			mensajeSaludo="Hola Estimada ";
	    	}else{
    			mensajeSaludo="Bienvenido Estimado ";
    		}
    	}else{
    		JOptionPane.showMessageDialog(null,"Error inesperado en la execucion del sistema. La respuesta "+sexo+" no es reconocida como una respuesta valida.");
    	}
    }	
    
    private void preguntaSexo(){
    	respuestaSexo=JOptionPane.showInputDialog(null,pideSexo);//Pregunta su sexo
    }
    	
    private void pideNombre(){
    	nombre=JOptionPane.showInputDialog(null,pedidoNombre);//Pide el nombre
    }
    
    private void muestraSaludo(){
    	JOptionPane.showMessageDialog(null,mensajeSaludo+nombre+".");//Saluda en pantalla
    }    
    public static void main(String[] args) {
       new DemoIOJOptionPane();
    }
}
Bueno, esto es un ejercicio de practica que se me ocurrió para ver como usar:
1- JOptionPane
2- Estructiras IF - ELSE
3- IF dentro de otros IF
4- Variables

El problema es que el nombre me lo guarda correctamente, pero en esta parte siempre toma el seguido camino, es como que el valor de la variable se borrara

Código:
    private void defineSexo(){   	
		if(respuestaSexo=="No"){
			sexo="Femenino";
		}else{
			sexo="Masculino";
		}    	
    }
Pido por favor que me expliquen todo como NOVATO que soy. Realmente es un lenguaje que me cuesta particularmente por el tema de que los objetos no son mi preferencia jaja (Siempre preferi php estructurado)

Desde ya gracias a todos!
  #2 (permalink)  
Antiguo 05/06/2012, 16:15
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: PRINCIPIANTE - Perdida de información en variables JAVA

Es muy simple, las cadenas (String) son objetos, los objetos no deben compararse con el operador == sino "equals". Además te conviene asegurar que no varíe la respuesta según mayúsculas o minúsculas y todo eso se soluciona cambiando el fragmento dentro del IF con esto:

Código Java:
Ver original
  1. respuestaSexo.toLowerCase().equals("no")
  #3 (permalink)  
Antiguo 05/06/2012, 16:19
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: PRINCIPIANTE - Perdida de información en variables JAVA

Mil gracias! Entonces ahora me ducho y veo que tal me va...

Cualquier cosa edito el comentario. Pero quería agradecerte por tan buena respuesta!
  #4 (permalink)  
Antiguo 05/06/2012, 17:12
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: PRINCIPIANTE - Perdida de información en variables JAVA

Perdón por el Doble post. Ahora entonces tengo este nuevo codigo. Pero al parecer hay otro error porque no me lo ejecuta:

Código:
package cursojava.demos; //La encapsulamos en un lugar para todos los demo
import javax.swing.JOptionPane; //Importamos la clase JOptionPane

public class DemoIOJOptionPane {
    String nombre; //Este será la información para el I/O.
    String pedidoNombre; //Este será la cadena que aparecerá papa pedir el nombre.
    String mensajeSaludo; //Esta sera la cadena que mostrara antes del nombre.
    String pideSexo; //Texto a Mostrar para pedir el Sexo de la persona.
    String respuestaSexo; //Respuesta a la pregunta sobre su Sexo
    String sexo; // Varibale en la que se guardará el sexo de la persona.
    
    public DemoIOJOptionPane() {
    	//El constructor llama a sus métodos
    	declaraTextos();
    	preguntaSexo();
    	defineSexo();
    	defineSaludoSegunSexo();
    	pideNombre();
    	muestraSaludo();    	
    }

     private void declaraTextos(){
     	pedidoNombre="¿Cual es su nombre?";
     	pideSexo="Es usted un hombre? Responda con Si o No";
     }
    
    private void defineSexo(){   	
		if(respuestaSexo.equals("No")){
			sexo="Femenino";
		}else{
			sexo="Masculino";
		}    	
    } 
    	
    private void defineSaludoSegunSexo(){
    	if(sexo.equals("Femenino") || sexo.equals("Masculino")){
    		if(sexo.equals("Femenino")){
    			mensajeSaludo="Hola Estimada ";
	    	}else{
    			mensajeSaludo="Bienvenido Estimado ";
    		}
    	}else{
    		JOptionPane.showMessageDialog(null,"Error inesperado en la execucion del sistema. La respuesta "+sexo+" no es reconocida como una respuesta valida.");
    	}
    }	
    
    private void preguntaSexo(){
    	respuestaSexo=JOptionPane.showInputDialog(null,pideSexo);//Pregunta su sexo
    }
    	
    private void pideNombre(){
    	nombre=JOptionPane.showInputDialog(null,pedidoNombre);//Pide el nombre
    }
    
    private void muestraSaludo(){
    	JOptionPane.showMessageDialog(null,mensajeSaludo+nombre+".");//Saluda en pantalla
    }    
    public static void main(String[] args) {
       new DemoIOJOptionPane();
    }
}
Uso Jcreator (estoy pensando en cambiar a Eclipse, no porque sea un mal programa el Jcreator, sino porque el eclipse es mas conocido y tal vez tiene otras funciones...

Bueno, el problema es que ahora cuando le doy a compilar el Build Oytput me dice:

Código:
--------------------Configuration: <Default>--------------------

Process completed.
Pero cuando quiero ejecutarlo el Gerneral Output me dice:
Código:
--------------------Configuration: <Default>--------------------
Sintaxis: java [-options] class [args...]
           (para ejecutar una clase)
   o  java [-options] -jar jarfile [args...]
           (para ejecutar un archivo jar)
donde las opciones incluyen:
    -d32	  usar un modelo de datos de 32 bits, si está disponible
    -d64	  usar un modelo de datos de 64 bits, si está disponible
    -client	  para seleccionar la VM "client"
    -server	  para seleccionar la VM "server"
    -hotspot	  es un sinónimo de la VM "client" [anticuada]
                  La VM por defecto es client.

    -cp <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar>
    -classpath <ruta de acceso de búsqueda de clases de los directorios y los archivos zip/jar>
                  Lista separada por ; de directorios, archivos JAR
                  y archivos ZIP para buscar archivos de clase.
    -D<nombre>=<valor>
                  definir una propiedad del sistema
    -verbose[:class|gc|jni]
                  activar la salida verbose
    -version      imprimir la versión del producto y salir
    -version:<valor>
                  es necesario que se ejecute la versión especificada
    -showversion  imprimir la versión del producto y continuar
    -jre-restrict-search | -no-jre-restrict-search
                  incluir/excluir JRE privados de usuario en la búsqueda de versión
    -? -help      imprimir este mensaje de ayuda
    -X            imprimir la ayuda sobre las opciones que no sean estándar
    -ea[:<nombre_paquete>...|:<nombre_clase>]
    -enableassertions[:<nombre_paquete>...|:<nombre_clase>]
                  activar afirmaciones con la granularidad especificada
    -da[:<nombre_paquete>...|:<nombre_clase>]
    -disableassertions[:<nombre_paquete>...|:<nombre_clase>]
                  desactivar afirmaciones con la granularidad especificada
    -esa | -enablesystemassertions
                  activar afirmaciones del sistema
    -dsa | -disablesystemassertions
                  desactivar afirmaciones del sistema
    -agentlib:<nombre_bib>[=<opciones>]
                  cargar la biblioteca de agente nativa <nombre_bib>, como -agentlib:hprof
                  véase también -agentlib:jdwp=help y -agentlib:hprof=help
    -agentpath:<nombre_ruta_acceso>[=<opciones>]
                  cargar biblioteca de agente nativa con el nombre de la ruta de acceso completa
    -javaagent:<ruta_acceso_jar>[=<opciones>]
                  cargar agente de lenguaje de programación Java, véase java.lang.instrument
    -splash:<ruta_acceso_imagen>
                  mostrar una pantalla de presentación con la imagen especificada
Consulte http://www.oracle.com/technetwork/java/javase/documentation/index.html para obtener más información.

Process completed.
Y no lo puedo ejecutar

Alguna idea?
  #5 (permalink)  
Antiguo 06/06/2012, 08:02
Avatar de Lalounam  
Fecha de Ingreso: mayo-2012
Ubicación: México D.F.
Mensajes: 59
Antigüedad: 11 años, 11 meses
Puntos: 19
Respuesta: PRINCIPIANTE - Perdida de información en variables JAVA

A mi me funciona muy bien, el error que te está indicando por otro lado, no es de compilación sino de una ejecución java mal intentada. Podría ser la configuración del sistema que estás usando JCreator, pero no sabría decirte, nunca he usado ese sistema.

En realidad no importa qué IDE o herramienta uses, de hecho si configuras bien las variables de entorno las clases que estás haciendo en este momento compilan y ejecutan sin necesidad de todo el poder de un IDE.

Compilación (en consola): javac DemoIOJOptionPane.java

Ejecución (en consola): java DemoIOJOptionPane
  #6 (permalink)  
Antiguo 06/06/2012, 09:54
 
Fecha de Ingreso: junio-2012
Ubicación: En mi casa (?
Mensajes: 15
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: PRINCIPIANTE - Perdida de información en variables JAVA

Perfecto! Gracias! Ahora cambie a otra herramienta y funciona perfecto!

Mil gracias! Creo que habría que cambiar el tema a Cerrado o Solucionado.

Gracais!

Etiquetas: principiante, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:14.