• Viernes 8 de Noviembre de 2024, 17:50

Autor Tema:  numero primo(pasaje por referencia)  (Leído 1698 veces)

tomas_sauron

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
numero primo(pasaje por referencia)
« en: Martes 8 de Marzo de 2011, 05:31 »
0
hola gente de java soy muy nuevo en java es mas empece anoche leyendo un manual q encontre en la web,bueno lo q mas me importa es si me pueden ayudar a entender
el pasaje por referencia de java ya q yo conozco el de pascal y no son iguales,intente implementar el pase de parametros por referencia con un clasico como el de
los numeros primos pero no quedo bien al compilar sale primos_ppal.java:27:cannot find symbol
smbol:constructor
es el error de estar mal hecha la referencia supongo bueno si alguien me puede ayudar se agradece de antemano !!
Código: Java
  1. class primos {
  2.        boolean esPrimo;
  3.        public  boolean primos(int n){
  4.           int k=2;
  5.           esPrimo=true;
  6.           while((k<=n-1) && (esPrimo)){
  7.              if((n%k)==0)
  8.                 esPrimo=false;
  9.              else
  10.                 esPrimo=true;
  11.              
  12.               k++;
  13.           }
  14.          
  15.           return(esPrimo);
  16.  
  17.  
  18.         }
  19.  
  20.  
  21. }
  22.  
  23. class primos_ppal {
  24.  
  25.         public static void main(String args[]) {
  26.            primos var;
  27.            var=new primos(3);
  28.            System.out.println(var);
  29.                  
  30.         }
  31.  
  32.        
  33.  
  34. }  
  35.  
pd:una funcion q devuelve un booleano puede ser static????

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: numero primo(pasaje por referencia)
« Respuesta #1 en: Martes 8 de Marzo de 2011, 09:44 »
0
En realidad tu problema no tiene nada que ver con el paso por referencia. Lo que te pasa es que un constructor no devuelve ningún valor. Tienes que declarar un constructor y después un método para hacer lo que quieres. En tu caso tu clase podría ser estática directamente, no necesitas un constructor ni ninguna instancia, pero dado que lo has hecho así, te indico un poco cómo sería tal y como lo has hecho (pero insisto, tu clase puede ser estática).

Código: Java
  1. class primos {
  2.    boolean esPrimo;
  3.    
  4.    public primos() {
  5.         esPrimo = false;
  6.    }
  7.    
  8.    public boolean es_primo(int n) {
  9.       int k=2;
  10.       esPrimo=true;
  11.       while((k<=n-1) && (esPrimo)){
  12.          if((n%k)==0)
  13.             esPrimo=false;
  14.          else
  15.             esPrimo=true;
  16.          
  17.           k++;
  18.       }        
  19.       return(esPrimo);
  20.     }
  21.  
  22.  
  23. }
  24.  
  25. class primos_ppal {
  26.  
  27.     public static void main(String args[]) {
  28.        primos var;
  29.        var=new primos;
  30.        System.out.println(var.es_primo(3));
  31.              
  32.     }
  33. }
  34.  
Aparte, realmente el atributo boolean esPrimo; te sobra por todos lados, pero entiendo que estés practicando con clases y sea algo meramente para aprender.

Resumiendo, tu programa correcto sería algo como (respetando tu algortimo, personalmente no lo haría así)

Código: Java
  1. public static class Primos
  2. {
  3.    
  4.    public static boolean es_primo(int n)
  5.    {
  6.       int k = 2;
  7.       boolean esPrimo = true;
  8.       while((k <= n-1) && (esPrimo))
  9.       {
  10.         if((n % k) == 0)
  11.         {
  12.             esPrimo = false;
  13.         }
  14.         else
  15.         {
  16.             k++;
  17.         }      
  18.       }        
  19.       return esPrimo;
  20.     }
  21. }
  22.  
  23. public class primos_ppal
  24. {
  25.     public static void main(String args[])
  26.     {     
  27.        System.out.println(Primos.es_primo(3));           
  28.     }
  29. }  
  30.  
Y en cuanto al PD, cualquier método puede ser estático. No influye el tipo de retorno.

tomas_sauron

  • Miembro activo
  • **
  • Mensajes: 56
    • Ver Perfil
Re: numero primo(pasaje por referencia)
« Respuesta #2 en: Martes 8 de Marzo de 2011, 15:01 »
0
bueno gracias querido por la ayuda!!...igualmente por lo poco q se y lei mas de una clase no puede ser public,ademas static debe ser el metodo q posea algo dentro d si,ojo! esto es lo q me arrojo el compilador (los errores),lo q si es cierto un constructor no devuelve valor alguno entonces a ver si me ayudas con esta duda como hago para comunicarme entre clases de manera statica ???..muchas gracioas amigo!!

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: numero primo(pasaje por referencia)
« Respuesta #3 en: Martes 8 de Marzo de 2011, 16:06 »
0
Cita de: "tomas_sauron"
igualmente por lo poco q se y lei mas de una clase no puede ser public
Falso, puedes tener todas las clases públicas que quieras. Eso sí, cada una en un fichero .java diferente.

Cita de: "tomas_sauron"
ademas static debe ser el metodo q posea algo dentro d si
No entiendo qué quieres decir. Todos los métodos llevan algo dentro, porque si no, no sirven para nada  :lol:

Cita de: "tomas_sauron"
lo q si es cierto un constructor no devuelve valor alguno entonces a ver si me ayudas con esta duda como hago para comunicarme entre clases de manera statica ???
Efectivamente los constructores no devuelven valor. Pero no entiendo tu pregunta. ¿Qué clase de comunicación te refieres? En el anterior ejemplo ya tienes un ejemplo de comunicación donde la clase primos_ppal se comunica con la clase estática primos.