Programación General > Java
numero primo(pasaje por referencia)
(1/1)
tomas_sauron:
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 ---class primos { boolean esPrimo; public boolean primos(int n){ int k=2; esPrimo=true; while((k<=n-1) && (esPrimo)){ if((n%k)==0) esPrimo=false; else esPrimo=true; k++; } return(esPrimo); } } class primos_ppal { public static void main(String args[]) { primos var; var=new primos(3); System.out.println(var); } } pd:una funcion q devuelve un booleano puede ser static????
m0skit0:
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 ---class primos { boolean esPrimo; public primos() { esPrimo = false; } public boolean es_primo(int n) { int k=2; esPrimo=true; while((k<=n-1) && (esPrimo)){ if((n%k)==0) esPrimo=false; else esPrimo=true; k++; } return(esPrimo); } } class primos_ppal { public static void main(String args[]) { primos var; var=new primos; System.out.println(var.es_primo(3)); } } 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 ---public static class Primos { public static boolean es_primo(int n) { int k = 2; boolean esPrimo = true; while((k <= n-1) && (esPrimo)) { if((n % k) == 0) { esPrimo = false; } else { k++; } } return esPrimo; } } public class primos_ppal { public static void main(String args[]) { System.out.println(Primos.es_primo(3)); } } Y en cuanto al PD, cualquier método puede ser estático. No influye el tipo de retorno.
tomas_sauron:
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:
--- Cita de: "tomas_sauron" ---igualmente por lo poco q se y lei mas de una clase no puede ser public
--- Fin de la cita ---
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
--- Fin de la cita ---
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 ???
--- Fin de la cita ---
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.
Navegación
Ir a la versión completa