Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Dyabel03 en 6 Marzo 2011, 19:40 pm



Título: Duda sobre un metodo que devuelva tres valores random
Publicado por: Dyabel03 en 6 Marzo 2011, 19:40 pm
Saludos para todos,

Quisiera saber cómo hago o que me aconsejan hacer para que un método me retorne tres valores que  son random…el programa es sobre vuelos aéreos, aca les presento como tengo los atributos y los métodos… Y también si me explicaran como  plantearlo en la clase principal.
De antemano gracias.

Código:
import javax.swing.*;
public class Aerolinea
{
    private long numerotikete;
    private String nombretikete;
    private String clasevuelo;
    private long puertavuelo;
    private long sillavuelo;
    private String ubicacion;
    private String destino;
    private double valortikete;


 // metodo crear tikete
    public Aerolinea(String n,String c,String ub,String de)
    { nombretikete=n;
      numerotikete=(long)(Math.random()*1000);
      clasevuelo=c;
      puertavuelo=(long)(Math.random()*1000);
      sillavuelo=(long)(Math.random()*1000);
      ubicacion=ub;
      destino=de;
      valortikete=0;
    }
     public void pagartikete(double vt)
    { valortikete+=vt;}

     public void cancelartikete(double vt)
    {  if(valortikete==0)
         valortikete-=vt;
         }


    public double consultartikete()
    {return valortikete; }




}

Sé que si escribo:
Código:
public long Aerolinea(String n,String c,String ub,String de)
{
nombretikete=n;
clasevuelo=c;
ubicacion=ub;
destino=de;
valortikete=0;
numerotikete=(long)(Math.random()*1000);
puertavuelo=(long)(Math.random()*1000);
 sillavuelo=(long)(Math.random()*1000);
Return numerotikete;
}

Puedo ver en pantalla sin problema el numero de tiquete  pero como hago para poder retornar  los otros dos atributos?...les agradezco su ayuda.



Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Shell Root en 6 Marzo 2011, 20:34 pm
Retornas un vector


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: tragantras en 6 Marzo 2011, 23:37 pm
o pasa un array como parámetro de entrada y modifica los valores directamente ahi... (cosa feita...)


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Shell Root en 7 Marzo 2011, 03:54 am
O lo retornas como una cadena separada por un delimitador después usas la función SPLIT.


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Pirat3net en 7 Marzo 2011, 15:21 pm
aprobecho esta duda para publicar una duda sobre una de las respuestas, dijeron por ahi retornar un vector,
pero al hacer
return vector[n], lo que vas a hacer es solo retornar la posicion n, y si haces un
for(k=0;k<vector.lenght<;k++){
return vector[k]
}
ahi solo retornaria la posicion vector[0] y se acabaria el metodo.
como se retornarian todos los valores del vector?


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Shell Root en 7 Marzo 2011, 18:23 pm
Pues sólo tienes que enviar el Array, por ejemplo,
Código
  1.  
  2. /* Función que devuelve un Array */
  3. public static int[] fArray(){
  4. int sArray[] = new int[2];
  5. sArray[0] = 1;
  6. sArray[1] = 2;
  7.  
  8. return sArray;
  9. }
  10.  
  11. /* Método principal */
  12. public static void main(String[] args) {
  13. int sArray[] = new int[2];
  14. sArray = fArray();
  15. for(int i=0; i<2; i++){ System.out.println( sArray[i] ); }
  16. }


Resultado:
Código
  1. alex@shellroot:~/Escritorio$ javac PoC.java -Xlint
  2. alex@shellroot:~/Escritorio$ java PoC
  3. 1
  4. 2


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: 1mpuls0 en 7 Marzo 2011, 20:40 pm
Quisiera saber cómo hago o que me aconsejan hacer para que un método me retorne tres valores

Un método solo te puede retornar 1 valor o 0,  para el caso del constructor siempre será 0.

Lo que te recomiendo yo es usar los metodos set y get =)

return vector[n], lo que vas a hacer es solo retornar la posicion n

Si haces eso no retornas la posición de "n" sino el contenido en el arreglo en esa posición.

y si haces un
for(k=0;k<vector.lenght<;k++){
return vector[k]
}
ahi solo retornaria la posicion vector[0] y se acabaria el metodo.

No terminaría el método, depende del tamaño del vector. Además supongamos para un caso general, necesitas otro return, para el método.
Y nuevamente no regresará la posicion, sino el contenido de esa posición.

como se retornarian todos los valores del vector?

Así.

Código
  1. public class RetornarVector {
  2.  
  3. public static void main(String args[]) {
  4. new RetornarVector();
  5. }
  6.  
  7.    public RetornarVector() {
  8.     int vaux[] = vector();
  9.     for(int i=0; i<vaux.length; i++)
  10.     System.out.println(vaux[i]);
  11.    }
  12.  
  13.    private int[] vector(){
  14.     int v[]={1,2,3};
  15.     return v;
  16.    }
  17. }
  18.  


Un saludo.


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Pirat3net en 8 Marzo 2011, 17:30 pm
lo que me refiero con el bucle for es que, desde que un metodo retorne un valor, el metodo termina,¿o estoy equivocado?


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Edu en 8 Marzo 2011, 17:45 pm
Pero si te explico Shell Root ya, el metodo tiene que devolverte el sArray y luego desp en el codigo q seguia despues de llamar al metodo haces un bucle para recorrer sArray[0] hasta sArray[n] depende como lo hagas y para q lo quieras


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: 1mpuls0 en 8 Marzo 2011, 17:49 pm
lo que me refiero con el bucle for es que, desde que un metodo retorne un valor, el metodo termina,¿o estoy equivocado?

No entiendo muy bien a que te refieres con que el método termina?, no te refieres al ciclo?

Y es que como te digo depende, por ejemplo puedo terminar el ciclo con una comparación, por ejemplo

for(int i=0; i<arreglo.length; i++){
   if(arreglo[3]==0)
     break;
}

Depende de lo que quieras hacer, o mas bien de las instrucciones que le des =)

Expon mejor tu duda y te ayudaremos.


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Shell Root en 8 Marzo 2011, 20:39 pm
Definitivamente, No hay peor ciego, que el que no quiere ver


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: Ragnarok en 12 Marzo 2011, 19:24 pm
aprobecho esta duda para publicar una duda sobre una de las respuestas, dijeron por ahi retornar un vector,
pero al hacer
return vector[n], lo que vas a hacer es solo retornar la posicion n, y si haces un
for(k=0;k<vector.lenght<;k++){
return vector[k]
}
ahi solo retornaria la posicion vector[0] y se acabaria el metodo.
como se retornarian todos los valores del vector?

No marcando el índice del elemento que quieres retornar si no quieres retornar un elemento sino todo el vector, es decir en lugar de:
Código:
return vector[k];
escribir
Código:
return vector;
Lee las normas y usa las etiquetas de código.


lo que me refiero con el bucle for es que, desde que un metodo retorne un valor, el metodo termina,¿o estoy equivocado?
Se puede arreglar.
http://chaoticjava.com/posts/java-yield-return-code-published/


Título: Re: Duda sobre un metodo que devuelva tres valores random
Publicado por: .mokk. en 13 Marzo 2011, 07:53 am
Código
  1. public class RetornarVector {
  2.  
  3. public static void main(String args[]) {
  4. new RetornarVector();
  5. }
  6.  
  7.    public RetornarVector() {
  8.     int vaux[] = vector();
  9.     for(int i=0; i<vaux.length; i++)
  10.     System.out.println(vaux[i]);
  11.    }
  12.  
  13.    private int[] vector(){
  14.     int v[]={1,2,3};
  15.     return v;
  16.    }
  17. }
  18.  


Un saludo.

Ya con eso podria entender como hacerlo aun sino mira algo asi podria ser lo que ocupas
Código
  1. private static int[]  vector(int max)
  2. {
  3.    //max sera el tamaño del vector
  4.    int [] vec = new int[max];
  5.    //Creamos nuestro codigo para el Random
  6.    Random r = new Random();
  7.  
  8.    //Rellenaremos nuestro vector
  9.    for(int x=0;x<vec.lenght;x++)
  10.    {
  11.        //Rellenar el vector en la respectiva posicion con un numero random del 0 - 999
  12.        vec[x] = r.nextInt(1000);
  13.    }
  14.  
  15.    //Returnamos nuestro vector
  16.    return vec;
  17. }
  18.  

Ya con ello al obtenerlo recuerda que debe ser obtenido en otro vector del mismo tipo y ya solo obtendrias su contenido de la misma forma como lo rellenamos solo que en ves de introducirle un numero lo mostraremos
Código
  1. int [] vec = new int[3];
  2. vec = vector(3);
  3.  
  4. for(int x=0;x<vec.lenght;x++)
  5.    {
  6.        System.out.println(vec[x]);
  7.    }
  8.  

Saludos y suerte.