Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] esto del metodo void...

Estas en el tema de esto del metodo void... en el foro de Java en Foros del Web. buen día, estoy dando mis primeros pinitos en Java, pero no entiendo nada sobre el void y estas cosas. por ejemplo miren esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 20/02/2013, 07:28
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
esto del metodo void...

buen día, estoy dando mis primeros pinitos en Java, pero no entiendo nada sobre el void y estas cosas. por ejemplo miren esto:

Código java:
Ver original
  1. import java.util.*;
  2. public class Ejemplo2 {
  3.  
  4.     public void espar(int num1, int num2) {
  5.         if (num1 % 2 == 0) {
  6.             System.out.println(num1+" es par.");
  7.         }
  8.         if (num2 % 2 == 0) {
  9.             System.out.println (num2+" es par.");
  10.         }
  11.     }
  12.  
  13.     public int suma(int num1, int num2) {
  14.         return num1+num2;
  15.     }
  16.  
  17.     public static void main (String args[]) {
  18.         int n1, n2, n;
  19.         Ejemplo2 E = new Ejemplo2();
  20.         Scanner sc = new Scanner(System.in);
  21.         System.out.println ("Ingresa un numero");
  22.         n1 = sc.nextInt();
  23.         System.out.println ("Ingresa un numero");
  24.         n2 = sc.nextInt();
  25.         n = E.suma(n1,n2); //Llamamos a la funcion "suma"
  26.         System.out.println ("La suma es: "+n);
  27.         E.espar(n1,n2); //Llamamos a la funcion "espar"
  28.     }
  29. }

dice esto "La función "espar" es del tipo void pues no devuelve valor, únicamente recibe dos números como parámetros y nos imprime en pantalla si son pares.

La función "suma" es del tipo int, ya que recibe dos números y devuelve la suma, es decir un entero."

pero en mi forma de pensar, yo digo que si puede devolver valor la función espar.

Yo lo haria así:

Código Javascript:
Ver original
  1. public class llamado {
  2.  
  3.    
  4.     public class Ejemplo2 {
  5.  
  6.     public void espar(int num1, int num2) {
  7.        
  8.         int suma= num1+num2;
  9.        
  10.         System.out.println(" la suma es "+suma);
  11.     }
  12.  
  13.  
  14. }}

y así devolveria un resultado, no es asi?
  #2 (permalink)  
Antiguo 20/02/2013, 07:42
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: esto del metodo void...

No, así no devuelve nada, solo muestra la suma en pantalla. si quieres que devuelva un resultado, en vez de void debes poner el tipo de resultado, en tu caso int y terminar la función en un return del resultado

Código java:
Ver original
  1. public class llamado {
  2.  
  3.    
  4.     public class Ejemplo2 {
  5.  
  6.     public int espar(int num1, int num2) {
  7.        
  8.         int suma= num1+num2;
  9.        
  10.         System.out.println(" la suma es "+suma);
  11.         return suma;
  12.     }
  13.  
  14.  
  15. }}

Se bueno
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/02/2013, 08:49
 
Fecha de Ingreso: octubre-2012
Mensajes: 33
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: esto del metodo void...

Ten en cuenta que el valor que retorna una funcion en java es el que va de despues de la palabra reservada Return y ese valor debe coincidir con el tipo de dato indicado en el encabezado de la funcion, de lo contrario da un error de compilacion
  #4 (permalink)  
Antiguo 20/02/2013, 09:15
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: esto del metodo void...

Cita:
Iniciado por sfermat Ver Mensaje
Ten en cuenta que el valor que retorna una funcion en java es el que va de despues de la palabra reservada Return y ese valor debe coincidir con el tipo de dato indicado en el encabezado de la funcion, de lo contrario da un error de compilacion
tengo el metodo principal asi:

Código java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class Usodelvoid {
  12.  
  13.     /**
  14.      * @param args the command line arguments
  15.      */
  16.     public static void main(String[] args) {
  17.         devuelvesuma suma = new devuelvesuma();
  18.        
  19.        
  20.     }
  21. }

la subclase

Código java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class devuelvesuma {
  12.  
  13.     public class Ejemplo2 {
  14.  
  15.         public int espar(int num1, int num2) {
  16.  
  17.             int suma = num1 + num2;
  18.  
  19.             System.out.println(" la suma es " + suma);
  20.             return suma;
  21.         }
  22.     }
  23. }

al colocar suma. no me muestra la funcion. ¿por qué?
  #5 (permalink)  
Antiguo 20/02/2013, 09:29
Avatar de ipraetoriux  
Fecha de Ingreso: abril-2010
Ubicación: ipraetoriux.com
Mensajes: 1.125
Antigüedad: 14 años
Puntos: 155
Respuesta: esto del metodo void...

... acá tenes problemas en concetos de métodos y clase...no te retona nada ni imprime nada, porque acá "devuelvesuma suma = new devuelvesuma();" solamente estas instanciando la clase "devuelvesuma()" y nada mas, que entre paréntesis, por convensión, debería llamarse DevuelveSuma();

...para para que te imprima, debes llamar al método espar();...y por otro lado, la clase Ejemplo2 es totalmente innecesaria...si estas aprendiendo Java, no te compliques con Nested Classes(clases internas)...directamente defini el metodo dentro de la clase "devuelvesuma"

...luego dentro del método "espar"..o retornas o imprimis...no es que no puedas hacer las dos cosas, pero en este ejemplo, o una cosa o la otra...

...y finalmente que queres que te imprima si no estas pasando argumentos al metodo espar()...

...ordenadamente esto deberia quedarte asi..

Código JAVA:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class Usodelvoid {
  12.  
  13.     /**
  14.      * @param args the command line arguments
  15.      */
  16.     public static void main(String[] args) {
  17.         DevuelveSuma suma = new DevuelveSuma();
  18.         System.out.printf("La suma es: %d ", suma.esPar(1,3)) // va a imprimir "La suma es 4"
  19.        
  20.        
  21.     }
  22. }

Código JAVA:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class DevuelveSuma{
  12.  
  13.         public int esPar(int num1, int num2) {
  14.  
  15.             int suma = num1 + num2;
  16.             return suma;
  17.         }
  18.    
  19. }
  #6 (permalink)  
Antiguo 20/02/2013, 09:37
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: esto del metodo void...

Cita:
Iniciado por ipraetoriux Ver Mensaje
... acá tenes problemas en concetos de métodos y clase...no te retona nada ni imprime nada, porque acá "devuelvesuma suma = new devuelvesuma();" solamente estas instanciando la clase "devuelvesuma()" y nada mas, que entre paréntesis, por convensión, debería llamarse DevuelveSuma();

...para para que te imprima, debes llamar al método espar();...y por otro lado, la clase Ejemplo2 es totalmente innecesaria...si estas aprendiendo Java, no te compliques con Nested Classes(clases internas)...directamente defini el metodo dentro de la clase "devuelvesuma"

...luego dentro del método "espar"..o retornas o imprimis...no es que no puedas hacer las dos cosas, pero en este ejemplo, o una cosa o la otra...

...y finalmente que queres que te imprima si no estas pasando argumentos al metodo espar()...

...ordenadamente esto deberia quedarte asi..

Código JAVA:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class Usodelvoid {
  12.  
  13.     /**
  14.      * @param args the command line arguments
  15.      */
  16.     public static void main(String[] args) {
  17.         DevuelveSuma suma = new DevuelveSuma();
  18.         System.out.printf("La suma es: %d ", suma.esPar(1,3)) // va a imprimir "La suma es 4"
  19.        
  20.        
  21.     }
  22. }

Código JAVA:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package usodelvoid;
  6.  
  7. /**
  8.  *
  9.  * @author andres
  10.  */
  11. public class DevuelveSuma{
  12.  
  13.         public int esPar(int num1, int num2) {
  14.  
  15.             int suma = num1 + num2;
  16.             return suma;
  17.         }
  18.    
  19. }
Muchas gracias, lo solucione antes que me dijeras, pero igual te agradezco (Y)

Etiquetas: metodo, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:52.