Generar precios en una matriz aleatoriamente
1 Respuesta
Yo toy haciendo el vector de objetos.. ya esta listo ese.. pero no se como hacer el tema de la matriz de 4 x 6 float para los precios.. y esos precios se tienen que generar aleatoriamente... yo acá abajo t pego los códigos fuente de mi programa ya echo.. no ta terminado el código.. también necesito ayuda para poder seguir con el trabajo ya que lo tengo que entregar el viernes que viene :S
public class Aerolineas
{
private Vuelo vuelos[];
private Precios precio[][];
private String nombre;
public Aerolineas()
{
nombre = "U.T.N Viajes";
vuelos = new Vuelo[5];
precio = new Precios[4][6];
}
public Aerolineas(int n)
{
nombre = "U.T.N Viajes";
vuelos = new Vuelo[n];
precio = new Precios[4][6];
}
public Aerolineas(String tit, int n)
{
nombre= tit;
vuelos = new Vuelo[n];
precio = new Precios[4][6];
}
public int getCantidadVuelos()
{
return vuelos.length;
}
public Vuelo getVuelo(int i)
{
return vuelos;
}
public void setVuelo(Vuelo vue, int i)
{
if (vue != null){ vuelos=vue;}
}
public String toStringConteo()
{
String r = "Conteo por tipo de vuelo y provincia de destino:";
for (int i = 0; i < precio.length; i++)
{
r = r + "\n\tTipo: " + i;
for (int j = 0; j < precio.length; j++)
{
r = r + "\n\t\tProvincia: " + j + " - Precios: " + precio[j];
}
}
return r;
}
public void generarPreciosAleatorios()
{
for( int p = 0; p < 4; p++)
{
for( int m = 0; m < 6; m++)
{
float pre = (float)Math.random() * 100;
precio
[m] = new Precios(pre);
}
}
}
public String toString()
{
String r = "Aerolinea: " + nombre + "\n{";
for(int i = 0; i < vuelos.length; i++)
{
r = r + "\n\t" + vuelos.toString();
}
r = r + "\n}";
return r;
}
}
public class Vuelo
{
private String codigo;
private int tipo; /* tipo de 0 a 3*/
private int provincia; /* provincia de 0 a 5*/
public Vuelo()
{
}
public Vuelo(String cod, int tip, int prov)
{
codigo=cod;
tipo=tip;
provincia=prov;
}
public String getCodigo()
{
return codigo;
}
public int getTipo()
{
return tipo;
}
public int getProvincia()
{
return provincia;
}
public void setCodigo(String cod)
{
codigo = cod;
}
public void setTipo(int tip)
{
tipo = tip;
}
public void setPronvincia(int prov)
{
provincia = prov;
}
public String toString()
{
String r = "Codigo de vuelo: " + codigo;
r += "\tTipo de vuelo: " + tipo;
r += "\tProvincia: " + provincia;
return r;
}
}
public class Consola
{
/*
* 1) Todos los métodos de esta clase son estáticos, y por lo tanto pueden ser invocados sin tener que crear objetos de la clase. Es
* suficiente con nombrar la clase al invocar el método: int x = Consola.readInt();
*/
/**
* Lee un string desde teclado. El string termina con un salto de linea
* @return el string leido (sin el salto de linea)
*/
public static String readLine()
{
int ch;
String r = "";
boolean done = false;
while (!done)
{
try
{
ch = System.in.read();
if (ch < 0 || (char)ch == '\n') { done = true; }
else
{
if ((char)ch != '\r') { r = r + (char) ch; }
}
}
catch(java.io.IOException e)
{
done = true;
}
}
return r;
}
/**
* Lee un integer desde teclado. La entrada termina con un salto de linea
* @return el valor cargado, como un int
*/
public static int readInt()
{
while(true)
{
try
{
return Integer.parseInt(readLine().trim());
}
catch(NumberFormatException e)
{
System.out.println("No es un integer. Por favor, pruebe otra vez!");
}
}
}
/**
* Lee un double desde teclado. La entrada termina con un salto de linea
* @return el valor cargado, como un double
*/
public static double readDouble()
{
while(true)
{
try
{
return Double.parseDouble(readLine().trim());
}
catch(NumberFormatException e)
{
System.out.println("No es un flotante. " + "Por favor, pruebe otra vez!");
}
}
}
}
public class Principal
{
private static Aerolineas a;
public static void main (String args[])
{
a = new Aerolineas();
int op;
do
{
System.out.println("Menú Principal - ");
System.out.println("\t1. Cargar datos (generar aleatoriamente)");
System.out.println("\t2. Mostrar datos");
System.out.println("\t3. Salir: ");
System.out.print("\nIngrese la opcion deseada: ");
op=Consola.readInt();
switch(op)
{
case 1: a.generarPreciosAleatorios();
break;
case 2: a.toString();
break;
case 3: break;
default: System.out.print("No hay opción con ese número!!");
}
}
while(op!=3);
}
}
public void generarPreciosAleatorios()
{
for( int p = 0; p < 4; p++)
{
for( int m = 0; m < 6; m++)
{
float pre = (float)Math.random() * 100;
precio
[m] = new Precios(pre);
}
}
}
Si es así, bueno, pues comencemos por el lado de que no tienes una clase Precios... como sea no la necesitas, solo create un arreglo de Objetos, para que le puedas meter cualquier cosa, ¿ok?
Después tenemos que estas asignando a tu arreglo bidimensional tu objeto Precio... a lo cual seria más fácil meterle un objeto Float, que lleve en su constructor la previa operación que estas realizando... y para sacarlo por consola, pues solo crea otro método que recorra tu matriz... podría ser:
public void generarPreciosAleatorios()
{
for( int p = 0; p < 4; p++)
{
for( int m = 0; m < 6; m++)
{
float f = (float)Math.random() * 100;
precio
[m] = new Float(f);
}
}
}
Y para recorrerlo, pues :
public void imprimirPreciosAleatorios()
{
for( int p = 0; p < 4; p++)
{
for( int m = 0; m < 6; m++)
{
System.out.print (precio
[m])
}
System.out.println();
}
}
{
private float precios;
public Precios(float pre)
{
precios = pre;
}
public Precios()
{
}
public float getPrecios()
{
return precios;
}
public void setPrecios(float pre)
{
precios=pre;
}
public String toString()
{
String r= "Precios: "+precios;
return r;
}
}
Si m olvidaba.. ahí ta la clase precios.. .la verdad qno entendí mucho qdigamos lo qm dijiste:s.. y toy tratando de ver como hacer para hacerlo porque toy atrasado mal:S... gracias
Con respecto al arreglo de Objetos... si tu quieres un arreglo de determinado tipo de dato, llámese String, Integer, Float, o alguna clase que tu crees (Vuelo por ejemplo) tienes que hacerlo de la siguiente forma
String s = new String[x][y]; donde X y Y son tus tamaños....pero si haces un arreglo de Object
Object arreglo = new Object[x][y];
Entonces puedes meter distintos tipos de datos, por eso te decía que hicieras tu arreglo de Object (Objetos, pues...)
public void llenarMatrizAleatoriamente(){
float [ ][ ] precios = new float[4][6];
for (int i =0; i<4;i++){
for (int j=0;i<6;j++){
precios [j] = (float) (Math.random( ) * 1000);
}
}
}
Con este método, debería de funcionar el rellenado del arreglo...
- Compartir respuesta