Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SeñorX95 en 13 Marzo 2015, 20:33 pm



Título: Error metodo main
Publicado por: SeñorX95 en 13 Marzo 2015, 20:33 pm
He hecho el metodo main pero al devolver un valor devulevo la referencia en vez de la cadena de caracteres que tengo mal?

Código
  1. public static void main(String[] arg){
  2.       Scanner entrada=new Scanner(System.in);
  3.       double peso;
  4.       Recurso u=new Recurso();
  5.       String url;
  6.       System.out.println("Introduce el url");
  7.       url=entrada.nextLine();
  8.       if(url.equals("")){
  9.           System.out.println("Ha decidido salir");
  10.       }else{
  11.           System.out.println("Introduce el peso");
  12.           peso=entrada.nextInt();
  13.           if(u.verProtocolo()){
  14.               System.out.println("El url si tiene protocolo http");
  15.           }else {
  16.               System.out.println("El url no tiene protocolo http");
  17.           }
  18.  
  19.           System.out.println("La clave que se asigna a esta url es: "+u.calcularClave());
  20.  
  21.       }
  22.  
  23.  
  24.  
  25.  
  26.    }


Título: Re: Java
Publicado por: SeñorX95 en 13 Marzo 2015, 20:34 pm
En el metodo calcularClave () del final


Título: Re: Error metodo main
Publicado por: Usuario Invitado en 13 Marzo 2015, 20:42 pm
Vamos tío, si no pones el contenido de dicho método, ¿cómo esperas que te ayuden?


Título: Re: Error metodo main
Publicado por: SeñorX95 en 13 Marzo 2015, 20:49 pm
Código
  1. public char[] calcularClave(){
  2.        String s,n,a;
  3.        String[] servidor = url.split("/");
  4.        s=servidor[2];
  5.        String[] nombre = url.split("/");
  6.        n=nombre[6];
  7.        int resultado;
  8.        int total;
  9.        int suma=0;
  10.        int suma2=0;
  11.        String letras="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
  12.  
  13.        for (int i=0; i<s.length();i++) {
  14.            char n1;
  15.            n1=s.charAt(i);
  16.  
  17.            boolean x=false;
  18.            if(n1>'0' && n1<'9'){
  19.                suma+=Integer.parseInt(""+n1);
  20.            }else{
  21.                if((n1<'a' || n1>'z') && (n1<'A' || n1>'Z')){
  22.                    suma+=10;
  23.                }else{
  24.                    for(int j=0;x==false;){
  25.                        char n2;
  26.                        n2=letras.charAt(j);
  27.                        if(n1!=n2){
  28.                            j++;
  29.                        }else{
  30.                            x=true;
  31.                            suma+=(j+1);
  32.                        }
  33.                    }
  34.                }
  35.            }
  36.        }
  37.  
  38.        for (int i=0; i<n.length();i++) {
  39.            char n1;
  40.            n1=n.charAt(i);
  41.            boolean x=false;
  42.            if(n1>'0' && n1<'9'){
  43.                suma2+=Integer.parseInt(""+n1);
  44.            }else{
  45.                if((n1<'a' || n1>'z') && (n1<'A' || n1>'Z')){
  46.                    suma2+=10;
  47.                }else{
  48.                    for(int j=0;x==false;){
  49.                        char n2;
  50.                        n2=letras.charAt(j);
  51.                        if(n1!=n2){
  52.                            j++;
  53.                        }else{
  54.                            x=true;
  55.                            suma2+=(j+1);
  56.                        }
  57.                    }
  58.                }
  59.            }
  60.        }
  61.        total=suma+suma2;
  62.        resultado=total/n.length();
  63.        String a1,a2,a3;
  64.        a1=url.substring(url.indexOf("//")+2);
  65.        a2=a1.substring(a1.indexOf("/")+1);
  66.        a3=a2.substring(0,resultado);
  67.        char clave[] = a3.toCharArray();
  68.        return clave;
  69.    }


Título: Re: Error metodo main
Publicado por: Usuario Invitado en 13 Marzo 2015, 21:01 pm
Te daré algunos consejos:

1) Utiliza nombres descriptivos a las variables.
2) Modulariza código. Ese proceso largo lo puedes hacer en varios pequeños.

Si no sigues éstos dos simples consejos, tu código se convertirá en una completa mezcla de palabras sin sentido. Es de vital importancia que sigas esos principios desde ahora.

Respecto a tu pregunta, te imprime la referencia del array. Lo que tienes que hacer es recorrer el array de vuelto en un for e ir imprimiendo carácter por carácter.

Código
  1. for(char c : u.calcularClave())
  2.    System.out.print(c);


Título: Re: Error metodo main
Publicado por: SeñorX95 en 13 Marzo 2015, 21:08 pm
Y para sacar los carecteres juntos?


Título: Re: Error metodo main
Publicado por: Usuario Invitado en 13 Marzo 2015, 21:14 pm
Para eso puedes concatenar los caracteres así:

Código
  1. String key = "";
  2. for(char c : u.calcularClave())
  3.    key += c;
  4. System.out.println("La clave es: "+key);

Saludos.


Título: Re: Error metodo main
Publicado por: SeñorX95 en 13 Marzo 2015, 21:20 pm
Gracias tio eres un maquina!  ;D