elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Java / Re: Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 1 Enero 2010, 00:52 am
Gracias por tu valiosa ayuda LEYER!  :D

hasta ahorita voy muy bien con este ejercicio que ando haciendo, pero siempre he tenido una duda:

"Como puedo regresar al menu (inicio del programa, clase main) si en el cuadro del JOptionPane.showInputDialog el usuario le da click en CANCELAR?"

Ejemplo corto para explicarme:

Código
  1.  
  2. import javax.swing.JOptionPane;
  3.  
  4. public class pruebas {
  5.  
  6.    public static void main(String arg[]) {
  7.  
  8. int cadena[] = new int[5];
  9. int opcion;
  10.  
  11.  
  12. do
  13. {
  14. opcion=Integer.parseInt(JOptionPane.showInputDialog(null, "Selecciona tu opcion: \n" +
  15. "1) Cadena. \n" +
  16. "2) Salir."));
  17.  
  18. switch(opcion) {
  19.  
  20. case 1: pruebas.leer(cadena);
  21. break;
  22. case 2: JOptionPane.showMessageDialog(null, "Adios");
  23. break;
  24. default: JOptionPane.showMessageDialog(null, "Incorrecto");
  25. break;
  26. }
  27. }while(opcion!=2);
  28.  
  29.   }
  30.  
  31.    public static void leer(int cadena[]) {
  32.  
  33.    String mostrar="";
  34.  
  35. for(int posicion=0;posicion<cadena.length;posicion++) {
  36.  
  37.     // AQUI ES MI DUDA, si la persona se equivoco de opcion y le da en cancelar o en cerrar para SEGUN regresar el menu, el programa se cierra y da un error:
  38. /*
  39. Exception in thread "main" java.lang.NumberFormatException: null
  40.     at java.lang.Integer.parseInt(Integer.java:417)
  41.     at java.lang.Integer.parseInt(Integer.java:499)
  42.     at pruebas.leer(pruebas.java:37)
  43.     at pruebas.main(pruebas.java:20)
  44.  
  45. Process completed.
  46. */
  47.     cadena[posicion] = Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa 5 valores: \n"));
  48.     mostrar=mostrar+cadena[posicion]+"\n";
  49.  
  50.   }
  51.     JOptionPane.showMessageDialog(null, "Los valores introducidos fueron: \n" + mostrar);
  52.  
  53.   }
  54. }
  55.  

Tambien estudie Visual Basic y ahi es facil porque en cada boton le doy doble click y edito la propiedad del boton, si es cancelar -segun el caso- regresa al menu anterior o no guarda los datos, etc.

Pero aqui en java cuando la persona seleccion la opcion 1 del case 1, aparece el cuadro de InputDialog de JOption, pero la persona se equivoca y da en cancelar, el programa no regresa al menu principal (switch) y muestra el siguiente error:

Exception in thread "main" java.lang.NumberFormatException: null
    at java.lang.Integer.parseInt(Integer.java:417)
    at java.lang.Integer.parseInt(Integer.java:499)
    at pruebas.leer(pruebas.java:37)
    at pruebas.main(pruebas.java:20)

Process completed.

Como puedo hacer que en cancelar o cerrar regrese al menu del switch o clase principal?? Como funciona el return se puede usar?? He leido algo sobre etiquetas, pero como funciona? se puede regresar de un metodo a una etiqueta en la clase main? o como puedo hacer que regresa al menu si dan en cancelar?
12  Programación / Java / Re: Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 30 Diciembre 2009, 04:06 am
una ultima duda de este tema, debo usar null con un if en el metodo leervalores para evaluar si el objeto es nulo o no? Entre la ayuda que recibi me sugieron eso, pero
 ¿¿es necesario??

Código
  1. public static void leervalores(int cadena[], int x) {
  2.        if(cadena == null) // ¿¿ es NecesariO?? o lo quito?
  3.            return;// ¿¿ es NecesariO?? o lo quito?
  4.        int posicion;
  5.        for(posicion=0; posicion<cadena.length;posicion++) {
  6.            cadena[posicion]=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa " + x +" valores para la cadena 1: \n"));
  7.        }
  8.    }
  9.  

y una ultima duda para poder cerrar con este tema, estuve buscando ayuda por todas partes, pero solo aqui resolvi mi problema :D sirve poner en la parte de "do {" lo siguiente:

Código
  1. do {
  2.  
  3. try {
  4.                opcion=Integer.parseInt(JOptionPane.showInputDialog(null, "Escribe el numero de la opcion que deseas ejecutar: \n" +
  5.                "1) Añadir valores para la cadena 1. \n" +
  6.                "2) Añadir valores para la cadena 2. \n" +
  7.                "3) Mezclar cadena 1 y cadena 2 y mostrar la cadena resultante. \n" +
  8.                "4) Etecetera \n"));
  9.            } catch(NumberFormatException x){
  10.                opcion = 20; //O cualquier numero mayor que 17
  11.       }
  12.  
  13.       switch (opcion) {
  14.       case 1: etc
  15.       case 2: etc
  16.       }
  17. }while(opcion!=17)
  18.  

cabe decir que eso NO resolvio mi problema -al menos como lo intente-, pero podrias explicarme brevemente para que es ese try?? y el catch??
13  Programación / Java / Re: Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 30 Diciembre 2009, 03:50 am
FUNCIONOO! graciaaas!! Ahora si corre el programa, pero podrias explicarme como es que esta linea de codigo tuya resolvio todo?:

Código
  1. int x1=0, x2=0, cadena1[] = null, cadena2[]= null, opcion;

ya probe con eso y ya no me menciona valor no inicializado en el case3, ademas ya añadi el codigo restante al metodo mezclar y funciona excelente! gracias!

El case 3 ahora SI hace lo siguiente:

Código
  1. public static void mezclar(int cadena1[], int cadena2[])
  2.    {
  3. int cadena3[] = new int[cadena1.length+cadena2.length];
  4.  
  5.        System.arraycopy(cadena1, 0 , cadena3, 0, cadena1.length);
  6.        System.arraycopy(cadena2, 0 , cadena3, cadena1.length, cadena2.length);
  7.  
  8.        String cad1="";
  9.        for(int c=0;c<cadena1.length;c++)
  10.        {
  11.            cad1=cad1+cadena1[c]+"\n";
  12.        }
  13.  
  14.        String cad2="";
  15.        for(int c2=0;c2<cadena2.length;c2++)
  16.        {
  17.            cad2=cad2+cadena2[c2]+"\n";
  18.        }
  19.  
  20.        String cad3="";
  21.        for(int c3=0; c3<cadena3.length;c3++)
  22.        {
  23.            cad3=cad3+cadena3[c3]+"\n";
  24.        }
  25.  
  26.        JOptionPane.showMessageDialog(null, "El arreglo 1 es: \n" + cad1 + "El arreglo 2 es: \n" + cad2 + "El arreglo mezclado es: \n" + cad3); //recordatorio - sino funciona a veces hay que poner: new String(cadena3);
  27.    }
  28.  

Aunque como nota si declaro cadena3[] al principio en el main de la clase dice "variable3=> variable3 no es una variable conocida en el contexto actual"

Código:
int cadena3[] = new int[cadena1.length+cadena2.length];

tendre algo mal por ahi?? aunque tengo la duda... cuando declaro en el main y solicito ese dato en otro metodo dice "cannot find the symbol" porque no lo reconoce porque esta declarada en el main, no pasara asi lo mismo cuando descubra porque me dice eso de no es variable conocida en el contexto actual y lo declare en el main y luego lo pida en     public static void mezclar(int cadena1[], int cadena2[]) ??


Me gustaria saber cuanta diferencia hay en declarar los arrays al principio con valor null y x1 con 0?  Porque fue algo sencillo que pareciera no haber diferencia,

me intereso eso de a objetos, puedes explicarme mas con algun ejemplo real y pequeño de java?
14  Programación / Java / Re: Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 30 Diciembre 2009, 02:34 am
deberias programar mas orientado a obj ;) otra cosas no crees clases que hagan funciones simples para eso estan los metodos..sobre lo que dices el error esta en que cadena1, cadena2 no esta inicializado obviamnete ya que estas se encuantran en al case 1 y case 2 que son secuencias distintas pero no esta definida en la 3 por eso dice no definida deberias usar una variables de instancias.

PD: las etiquedas
Código
  1. [code=java]
[/code]

Gracias por la respuesta, lo que pasa es que ando aprendiendo java, ando en lo basico y pues me han enseñado en crear clases para todos mis programas, aunque me has dejado en duda como es orientado a objetos? como crear los metodos??

Mi maestra, como la mayoria, no enseña muy bien, uno tiene que documentarse de libros, internet, etc y he logrado mucho y espero lograr mas aqui en el foro, asi q cualquier sugerencia es valida ;)

Yo programaba en C, ahi crearia un "metodo" para cada uno, e incluirlo desde el inicio con #include factorizar.h etc pero necesito practicar de la manera que lo pongo en java, como lo haria?

Ok entonces ya entiendo, los valores puestos solo son para el case 1 y case 2 en su momento, por eso no esta disponible fuera del case, es como cuando uno declara algo dentro de un while o de un if y lo desea usar fuera de ellos. Entonces como hago para que los valores de esa cadena del case 1 y case 2 esten disponibles en los demas cases?? Existe alguna manera de hacerlo asi? Sin pedir esos valores antes?
15  Programación / Java / Re: Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 30 Diciembre 2009, 02:07 am
me explico mas: como parte del ejercicio del que pido ayuda, la opcion 3 debe de hacer lo siguiente:

"3) Mezclar (Unir) cadena 1 y cadena 2 en una nueva cadena y mostrar la cadena resultante. \n"

De la cadena1 almacenada del case 1 y la cadena2 del case2, voy a mezclar/unir esas dos cadenas en una sola cadena llamada cadena3. Por eso quiero que los valores de las cadenas del case 1 y case 2 esten guardados en memoria para poder -en el inciso 3- mezclarlas.

El inciso/opcion 3 hara algo que ya tengo echo antes separadamente (no dentro de un switch ni con metodos) como se ve en este ejercicio:

import javax.swing.*;

public class 
copiar2arraysen1
{
    public static 
void main(String arg[])
    {
        
// ESTE ARREGLO DE ESTE EJERCICIO SERIA EL QUE OBTENGO DEL CASE 1 DEL EJERCICIO QUE PIDO AYUDA
        
int arreglo_a[]={10,11,12,13,14,15,16};

        
// ESTE ARREGLO DE ESTE EJERCICIO SERIA EL QUE OBTENGO DEL CASE 2 DEL EJERCICIO QUE PIDO AYUDA        
        
int arreglo_b[]={20,21,22,23,24,25,26};

        
// ESTE ARREGLO DE ESTE EJERCICIO SERIA EL ARREGLO QUE OBTENGO DEL CASE 3 DEL EJERCICIO QUE PIDO AYUDA.
        
int arreglo_c[]=new int[arreglo_a.length+arreglo_b.length];

        
//AQUI MEZCLO LOS DOS ARREGLOS EN UN TERCERO, AQUI NO HAY PROBLEMA PORQUE ES UN PROGRAMA SIN SWITCH NI NADA, PERO ESTO MISMO QUIERO HACER EN EL CASE 3 DEL EJERCICIO QUE PIDO AYUDA
        
System.arraycopy(arreglo_a0arreglo_c0arreglo_a.length);
        
System.arraycopy(arreglo_b0arreglo_carreglo_a.lengtharreglo_b.length);

        
//AQUI CONCATENO LA CADENA_A EN UN STRING
        
String cadena1="";
        for(
int c=0;c<arreglo_a.length;c++)
        {
            
cadena1=cadena1+arreglo_a[c]+"\n";
        }

        
//AQUI CONCATENO LA CADENA_B EN UN STRING
        
String cadena2="";
        for(
int c2=0;c2<arreglo_b.length;c2++)
        {
            
cadena2=cadena2+arreglo_b[c2]+"\n";
        }

        
//AQUI CONCATENO LA CADENA_C EN UN STRING
        
String cadena3="";
        for(
int c3=0c3<arreglo_c.length;c3++)
        {
            
cadena3=cadena3+arreglo_c[c3]+"\n";
        }
    
        
//AQUI MUESTRO LAS 2 CADENAS ORIGINALES Y LA CADENA3 RESULTANTE DE UNIR/MEZCLAR LAS 2 CADENAS
        
JOptionPane.showMessageDialog(null"El arreglo 1 es: \n" cadena1 "El arreglo 2 es: \n" cadena2 "El arreglo mezclado es: \n" cadena3); //sino funciona poner: new String(cadena3);
        
JOptionPane.showMessageDialog(null,arreglo_c[4]);
        
JOptionPane.showMessageDialog(null,arreglo_c[10]);
    }
}

16  Programación / Java / Valor no Iniciallizado en Arrays (cadenas) dentro de un Switch en: 30 Diciembre 2009, 02:04 am
hOla q tal felices fiestas a todos!

Ando haciendo ejercicios con java, en especifico: Arrays (cadenas).

Ando inventando y haciendo un mega ejercicio que incluye todo lo que he aprendido de arrays, metodos, switch, if, for, while y do-while, mi problema es:

Hacer un programa que haga lo siguiente:

menu con switch

opcion 1 pedirle al usuario de que tamaño quiere la cadena1 y llenarla con valores
opcion 2 pedirle al usuario de que tamaño quiere la cadena2 y llenarla con valores
opcion 3 mezclar cadena 1 y cadena 2
opcion 4 sumar los valores de la cadena 1 y cadena 2
opcion 5 restar los valores de la cadena 1 de cadena 2
opcion 6 ordenar ascendentemente las dos cadenas
opcion 7 ordenar descendentemente las dos cadenas
opcion 8 crear una tercera cadena (cadena3), definida por el usuario y llenarla con valoes
opcion 9 ver tres cadenas= cadena1, cadena2 y cadena3
opcion 10 buscar un dato que el usuario desee en las cadenas, frecuencia, posicion
opcion 11 crear nueva cadena (cadena4), que el usuario de el tamaño y rellene con valores entre años 1980 y 2009 (un if)
opcion 12 crear nueva cadena (cadena5) que el usuario de el tamaño de la cadena y especifique un rango de X valor a X valor y le de valores (rellene)
opcion 13 mostrar 5 cadenas ascendentemente
opcion 14 mostrar los numeros pares de las 5 cadenas
opcion 15 mostrar los numeros impares de las 5 cadenas
opcion 16 mostrar numeros perfectos de las 5 cadenas
opcion 17 mostrar numeros amigos de las 5 cadenas
opcion 18 salir

Como ven es algo laborioso, ya comenze a hacer el programa pero estoy detenido en el case 3, porque para el case 1 pido el valor que desea y de ahi envio a un metodo el cual sirve para rellenar los valores de las cadenas y regresa al menu. Pero en el case 3 al poner:
Código:
case 3: proyectopersonal.mezclar(cadena1, cadena2);
                        break;
Netbeans muestra que la variable cadena1 y cadena2 no puede ser inicializada.

Alguien sabe por que los valores dados en los cases 1 y 2 no se quedan en memoria y no estan disponibles para el case 3??? Que hago mal??. Creen que sea porque el switch esta dentro de un for y un do-while y por consecuencia al terminar el ciclo los valores dados a los cases 1 y 2 no se almacenan y/o no quedan en memoria??

Mi codigo que he creado es el siguiente:

Código:
import javax.swing.*;

public class proyectopersonal
{
    public static void main(String arg[])
    {
        int x1, x2;

        int opcion;

        do
        {
            opcion=Integer.parseInt(JOptionPane.showInputDialog(null, "Escribe el numero de la opcion que deseas ejecutar: \n" +
                    "1) Añadir valores para la cadena 1. \n" +
                    "2) Añadir valores para la cadena 2. \n" +
                    "3) Mezclar cadena 1 y cadena 2 y mostrar la cadena resultante. \n" +
                    "4) Sumar cadena 1 y cadena 2. \n" +
                    "5) Restar cadena 1 de cadena 2. \n" +
                    "6) Ordenar las 3 cadenas ascendentemente. \n" +
                    "7) Ordenar las 3 cadenas descendentemente. \n" +
                    "IMPORTANTE: LAS OPCIONES 9 A LA 17 REQUIEREN EJECUTAR PRIMERO \n" +
                    "LAS OPCION 8, 11 y 12 PARA QUE FUNCIONE CORRECTAMENTE. \n" +
                    "8) Crear una nueva cadena (cadena3). \n" +
                    "9) Ver las 3 cadenas. \n" +
                    "10) Buscar un valor en las 3 cadenas. \n" +
                    "11) Crear una nueva cadena (cadena 4) definida por el usuario que acepta solo años entre 1980 y 2010. \n" +
                    "12) Crear una nueva cadena (cadena 5) entre un rango especifico definido por el usuario. \n" +
                    "13) Mostrar 5 cadenas Ascendentemente. \n" +
                    "14) Mostrar los Numero Pares de las 5 cadenas. \n" +
                    "15) Mostrar los Numero ImPares de las 5 cadenas. \n" +
                    "16) Mostrar los Numeros Perfectos de las 5 cadenas. \n" +
                    "16) Mostrar los Numeros Amigos de las 5 cadenas. \n" +
                    "17) Salir del Programa. \n"));

            switch (opcion)
            {
                case 1: x1=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa la longitud que deseas que tenga la cadena 1: \n"));
                        int cadena1[] = new int[x1];
                        proyectopersonal.leervalores(cadena1, x1);
                        break;

                case 2: x2=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa la longitud que deseas que tenga la cadena 2: \n"));
                        int cadena2[] = new int[x2];
                        proyectopersonal.leervalores(cadena2, x2);
                        break;

                case 3: proyectopersonal.mezclar(cadena1, cadena2);
                        break;

                case 17: JOptionPane.showMessageDialog(null, "Gracias por usar el programa");
                        break;
                
                default: JOptionPane.showMessageDialog(null,"Opcion Incorrecta, corrobora el numero que introduciste");
                        break;
            }
        }
        while (opcion!=17);

    }

public static void leervalores(int cadena[], int x)
    {
        int posicion;

        for(posicion=0; posicion<cadena.length;posicion++)
        {
            cadena[posicion]=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa " + x +" valores para la cadena 1: \n"));
        }
}

    public static void mezclar(int cadena1[], int cadena2[])
    {

    }
}

Como nota, cuando pido los valores antes del do y del switch los valores de las cadenas si estan disponibles para los cases, pero no se ve nada estetico que primero pida el tamaño y valores de las cadenas 1 y 2 y despues el menu, por lo que quiero hacerlo dentro del switch, pueden decirme como hacer que los valores esten disponibles para todos los cases?

Esto pongo fuera del switch y si esta disponible para todo los cases:

Código:
import javax.swing.*;

public class proyectopersonal
{
    public static void main(String arg[])
    {
        int x1, x2;
        // para establecerlo antes del switch
        x1=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa la longitud que deseas que tenga la cadena 1: \n"));
        x2=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa la longitud que deseas que tenga la cadena 2: \n"));

        int cadena1[] = new int[x1];
        int cadena2[] = new int[x2];
        

        // enviar directametne antes del switch las cadenas y valores
       proyectopersonal.leervalores(cadena1, cadena2, x1, x2);

        int opcion;

        do{ switch {
}ETCETERA...
}

Y en el metodo puse:

Código:
public static void leervalores(int cadena1[], int cadena2[], int x1, int x2)
    {
        int posicion;

for(posicion=0; posicion<=cadena1.length;posicion++)
        {
            cadena1[posicion]=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa " + x1 +" valores para la cadena 1: \n"));
        }

        for(posicion=0; posicion<=cadena2.length;posicion++)
        {
            cadena2[posicion]=Integer.parseInt(JOptionPane.showInputDialog(null, "Ingresa " + x2 +" valores para la cadena 2: \n"));
        }
}
17  Programación / Ejercicios / Re: Tutorial de Karel el robot - Aprendiendo a pensar como programador. en: 30 Diciembre 2009, 01:53 am
quizas vaya contra las reglas, pero he llegado desde google y me ha gustado el programa Karel, pero mencionan uno llamado LOGO he buscado en g00gle y no arroja un programa llamado LOGO, podria alguien que lo conozca decirme como se llama o que empresa hace ese programa o que pagina lo bajo?

Asi sirve de referencia para los demas que lleguen a este web
18  Programación / Ingeniería Inversa / Re: Ayuda para Crear un Keygen. en: 30 Diciembre 2009, 01:20 am
pero como puede uno aprender eso? si buscas en google no hay nada de eso, aunque por estos foros o por amigos encuentras o ves cada herramienta muy buena (aunque no lo sepa usar) que no esta en los resultados de google...

pero como aprender de algo q no hay resultados en google?
19  Seguridad Informática / Abril negro / Re: Proyecto Metamorph en: 30 Diciembre 2009, 01:17 am
Hola a todos soy nuevo en el foro, suena muy bueno el proyecto, pero realmente es otro nivel...

alguien me puede decir en que esta programado, o que necesito aprender para poder desarrollar algo asi?? Manejo C y Java pero nada parecido a este codigo, como le hago? que necesito investigar o q temas buscar? No creo que sea un simple #include studio.h y ya jaja
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines