Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch

Iniciado por camaleon123, 30 Diciembre 2009, 02:04 AM

0 Miembros y 1 Visitante están viendo este tema.

camaleon123

Cita de: LEYER en  1 Enero 2010, 01:11 AM
:) vale
esta comentado para que lo veas bien

Código (java) [Seleccionar]
import javax.swing.JOptionPane;

public class pruebas {
//variables
private  int cadena[]  =  new int[5];
private  int opcion    = 0;

//Metodo Menu principal
public void menu(){
do
{
String select = JOptionPane.showInputDialog(null, "Selecciona tu opcion: \n" +
   "1) Cadena. \n" +
"2) Salir.  ");
opcion=Integer.parseInt(select);
switch(opcion) {
case 1: leer(cadena);
break;
case 2: JOptionPane.showMessageDialog(null, "Adios");
break;
default: JOptionPane.showMessageDialog(null, "Incorrecto");
break;
}
}while(opcion!=2);
}
//Metodo de para leer
   public void leer(int cadena[]) {
       String mostrar="";
    for(int posicion=0;posicion<cadena.length;posicion++) {
        String temp =JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n");
        //comprobamos que el valor ingresado sea distinto que null y si es null
        // regresa al menu principal menu();
        if(temp!= null){
        cadena[posicion] = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n"));
        mostrar=mostrar+cadena[posicion]+"\n";
        //regresamos al menu principal
        }else
        menu();
      }
        JOptionPane.showMessageDialog(null, "Los valores introducidos fueron: \n" + mostrar);
      }
   public static void main(String arg[]) {
   // instancia de pruebas y llamamos al menu principal
    new pruebas().menu();
   }
}


wooooow MUCHAS GRACIAS!  ;D Eres todo un Master en Java, no encontraba nada en google para hacer eso, solo di con algo sobre  "catch (Exception e) { return null }" pero nada claro.

No se que hora tengas pero: Feliz Año Nuevo 2010!

Nos veremos en el 2010 aqui en el foro, espero y deseo que con menos dudas y mas respuestas mias de java :D

¡Feliz Año Nuevo!

Leyer

mas aprende uno por experiencia y practica :)
jaja claro aqui faltan 4 horas :P y feliz año nuevo

camaleon123

Cita de: LEYER en  1 Enero 2010, 01:11 AM
Código (java) [Seleccionar]

   public void leer(int cadena[]) {
       String mostrar="";

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

        String temp =JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n");

        //comprobamos que el valor ingresado sea distinto que null y si es null
        // regresa al menu principal menu();
        if(temp!= null){

        cadena[posicion] = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n"));

        mostrar=mostrar+cadena[posicion]+"\n";

        //regresamos al menu principal
        }else

        menu();
      }
        JOptionPane.showMessageDialog(null, "Los valores introducidos fueron: \n" + mostrar);
      }


Probe el codigo y al ingresar al metodo leer, ingreso hasta 10 datos y de ahi me muestra la cadena. Ejemplo: Ingreso 1,2,3,4,5,6,7,8,9,10 y solo me muestra 2,4,6,8,10. Cheque el codigo y pues efectivamente asi es porque primero hay un String que me pide un dato e ingreso 1 y checa que no es null y de ahi entre al verdadero JOption que establece el valor a la cadena, ahi pongo 2, y asi se repite...

La idea me gusto y ando queriendo perfeccionar pero no puedo, ya entendi que el error es porque al cerrar ventana o dar en cancelar asigna "null" a la entrada de datos y sale pero muestra error diciendo que el dato es null.

De ahi se me ocurrio asignar la cadena a un valor entero si no es null pero me dice: "incompatibles types, requerided: int, found: java.lang.String", lo que modifico es lo siguiente:

Código (java) [Seleccionar]

public void leer(int cadena[]) {
        String mostrar="";
    for(int posicion=0;posicion<cadena.length;posicion++) {
         String temp =JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n");
         //comprobamos que el valor ingresado sea distinto que null y si es null
         // regresa al menu principal menu();
         if(temp!= null){
         //asigno que el valor de cadena[posicion] sea igual a lo que tiene temp, pero da error de incompatibilidad de datos.
         cadena[posicion] = temp;
         mostrar=mostrar+cadena[posicion]+"\n";
         //regresamos al menu principal
         }else
        menu();
       }
         JOptionPane.showMessageDialog(null, "Los valores introducidos fueron: \n" + mostrar);
       }


Lo que he tratado es que en vez de:

Código (java) [Seleccionar]
String temp =JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n");

poner:

Código (java) [Seleccionar]
int temp = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n"));

De esa manera se quita el error en:

Código (java) [Seleccionar]
cadena[posicion]=temp;

pero me muestra un error en:

Código (java) [Seleccionar]
if(temp!=null)

porque es "Incomparable types: int and <nulltype>

creo que esto que quiero hacer es imposible en java...

mientras seguire buscando en google sobre el tipo de dato "null" y como compararlo

camaleon123

se me acaba de ocurrir dos cosas:

1.- editar el archivo Integer.java en la linea 417 donde dice:
Código (java) [Seleccionar]
        if (s == null) {
            throw new NumberFormatException("null");

y en vez de ponerle null ponerle un 1, asi al cerrar o dar en cancelar estable un valor 1 en vez de null, pero afecta eso a todo java??

2.- sino se puede lo anterior, se puede convertir de un valor entero a un valor String?

camaleon123

#14
Me cito a mi mismo:

Cita de: camaleon123 en  1 Enero 2010, 04:49 AM
2.- sino se puede lo anterior, se puede convertir de un valor entero a un valor String?

Al fin pude hacerlo!!  ;D :D creo que el año nuevo me depara un nuevo rumbo...

Lo que hice fue crear otra variable entero llamada temp2 que tenga el valor del string temp, de ahi cadena[posicion] toma el valor de temp2.

El codigo listo es:

Código (java) [Seleccionar]

public void leer(int cadena[]) {
       String mostrar="";
    for(int posicion=0;posicion<cadena.length;posicion++) {
        String temp = JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n");
        //comprobamos que el valor ingresado sea distinto que null y si es null
        // regresa al menu principal menu();
        if(temp!= null){
         
        int temp2=Integer.parseInt(temp);

        cadena[posicion] = temp2;

        mostrar=mostrar+cadena[posicion]+"\n";
        //regresamos al menu principal
        }else
        menu();
      }
        JOptionPane.showMessageDialog(null, "Los valores introducidos fueron: \n" + mostrar);
      }