Tema destacado: Suscripción al boletín mensual de elhacker.net
Autor
|
Tema: Duda sobre un metodo que devuelva tres valores random (Leído 2,011 veces)
|
Dyabel03
Desconectado
Mensajes: 1
|
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. 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: 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.
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Retornas un vector
|
|
|
|
|
En línea
|
 ---
|
|
|
tragantras
Desconectado
Mensajes: 466
|
o pasa un array como parámetro de entrada y modifica los valores directamente ahi... (cosa feita...)
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
O lo retornas como una cadena separada por un delimitador después usas la función SPLIT.
|
|
|
|
|
En línea
|
 ---
|
|
|
Pirat3net
Desconectado
Mensajes: 173
|
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?
|
|
|
|
|
En línea
|
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Pues sólo tienes que enviar el Array, por ejemplo, /* Función que devuelve un Array */ public static int[] fArray(){ int sArray[] = new int[2]; sArray[0] = 1; sArray[1] = 2; return sArray; } /* Método principal */ public static void main(String[] args) { int sArray[] = new int[2]; sArray = fArray(); for(int i=0; i<2; i++){ System.out.println( sArray[i] ); } } Resultado:alex@shellroot:~/Escritorio$ javac PoC.java -Xlint alex@shellroot:~/Escritorio$ java PoC 1 2
|
|
|
|
|
En línea
|
 ---
|
|
|
Darhius
Desconectado
Mensajes: 427
Divide y vencerás.
|
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í. public class RetornarVector { public static void main(String args[]) { new RetornarVector(); } public RetornarVector() { int vaux[] = vector(); for(int i=0; i<vaux.length; i++) System.out.println(vaux[i]); } private int[] vector(){ int v[]={1,2,3}; return v; } } Un saludo.
|
|
|
|
|
En línea
|
"Cuenta mi historia... a quienes pregunten, cuéntala con verdad, las cosas malas junto con las buenas y permite que sea juzgado apegado ellas... el resto... es silencio." Dinobot (Beast Wars Transformers)
|
|
|
Pirat3net
Desconectado
Mensajes: 173
|
lo que me refiero con el bucle for es que, desde que un metodo retorne un valor, el metodo termina,¿o estoy equivocado?
|
|
|
|
|
En línea
|
|
|
|
Edu
Desconectado
Mensajes: 1.082
Ex XXX-ZERO-XXX
|
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
|
|
|
|
|
En línea
|
|
|
|
Darhius
Desconectado
Mensajes: 427
Divide y vencerás.
|
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.
|
|
|
|
|
En línea
|
"Cuenta mi historia... a quienes pregunten, cuéntala con verdad, las cosas malas junto con las buenas y permite que sea juzgado apegado ellas... el resto... es silencio." Dinobot (Beast Wars Transformers)
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Definitivamente, No hay peor ciego, que el que no quiere ver
|
|
|
|
|
En línea
|
 ---
|
|
|
|
Ragnarok
|
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: return vector[k]; escribir 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/
|
|
|
|
|
En línea
|
|
|
|
.mokk.
Desconectado
Mensajes: 177
|
public class RetornarVector { public static void main(String args[]) { new RetornarVector(); } public RetornarVector() { int vaux[] = vector(); for(int i=0; i<vaux.length; i++) System.out.println(vaux[i]); } private int[] vector(){ int v[]={1,2,3}; return v; } } Un saludo. Ya con eso podria entender como hacerlo aun sino mira algo asi podria ser lo que ocupas private static int[] vector(int max) { //max sera el tamaño del vector int [] vec = new int[max]; //Creamos nuestro codigo para el Random Random r = new Random(); //Rellenaremos nuestro vector for(int x=0;x<vec.lenght;x++) { //Rellenar el vector en la respectiva posicion con un numero random del 0 - 999 vec[x] = r.nextInt(1000); } //Returnamos nuestro vector return vec; } 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 int [] vec = new int[3]; vec = vector(3); for(int x=0;x<vec.lenght;x++) { System.out.println(vec[x]); } Saludos y suerte.
|
|
|
|
|
En línea
|
|
|
|
|
|