Crear dos vectores/arrays/arreglos con los datos de uno

Iniciado por Browwwnnn, 17 Octubre 2014, 19:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Browwwnnn

Buenas a todos, abro este tema para ver si me pueden ayudar con un ejercicio que necesito resolver:
el ejercicio seria asi, tengo un vector al que le ingreso por ejemplo dos marcas de autos,
luego tengo que ingresar cual voy a alquilar, y luego de esto, tienen que armarse dos listas,
una de los autos que estan disponibles y otra con los autos alquilados.

Mi idea era la siguiente, armar un if y una variable alquilar(por ejemplo),y si alquilar es igual a un
dato del vector marca, que lo mueva a otro vector (ej alquilados), y si no lo es, que lo mueva a otro vector distinto
(ej disponibles), se entiende mi idea? en lo que estaria necesitando ayuda es en esto ultimo que no lo se resolver,
les dejo el codigo que tango armado.


package proyecto;
import java.util.Scanner;
public class Alquiler {
public static void main(String[]args){
Scanner teclado= new Scanner(System.in);

String[ ] marca=new String[2];
int x;
for(x=0;x<2;x++){
System.out.print("Ingrese la marca: "); //CARGO LOS DATOS AL VECTOR
marca[x]=teclado.next();
}

for(x=0;x<2;x++){
System.out.println(marca[x]);   //MUESTRO LOS DATOS DEL VECTOR
}

System.out.print("que auto desea alquilar?");
String alquilar; //DEFINO VARIABLE ALQUILAR

//hasta aqui llegue

}}



MNicolas

Buenas,

Java nos da muchas herramientas muy útiles. Una es la clase ArrayList. Es un vector de objetos, pero la diferencia con un array normal es que el ArrayList puede variar de tamaño.

Yo haría lo siguiente.

Una clase vehículo, con sus dos atributos, marca (string) y estaAlquilado (boolean). En el atributo marca guardaremos la marca de cada objeto vehiculo y en estaAlquilado true si lo está y false si no lo está.

De esta manera haces tu lista declarando tu arraylist y luego le metes tantos vehiculos como quieras ya que partimos con la ventaja de que el arraylist es dinámico. No dejo el código para que lo hagas tú mismo y puedas aprender, si quieres que te lo deje puedes decirlo y te lo dejaré comentado.

Otro detalle es que ignoro tus conocimientos en el tema de objetos en Java. Pero te recomiendo que aprendas rápido el ArrayList, que es muy útil.

Browwwnnn

Gracias por tu respuesta, no tengo problema en aprender a utilizar el ArrayList, la cosa es que tengo que realizar el proyecto con los temas dados en clase, y todavia no llegue al ArrayList :( .
Otra cosa, si por ejemplo tengo el vector "auto" con las marcas ingresadas y la variable "alquilar" para seleccionar como alquilada alguna marca  del vector auto, como defino el booleano? y luego de que lo defina, puedo armar una lista con los que resulten false y otra con los true?
Gracias por tu tiempo :)

P.D: estuve leyendo bastante por internet, y todos resuelven este tipo de problemas usando objetos y metodos, pero yo no llegue a dar nada de eso todavia.

MNicolas

Puedes hacer un array bidimensional.

String[][] listaVehiculos = new String[tantos coches como quieras][2];

De manera gráfica quedaría así.

{"mercedes-benz", "bmw", "audi"}
{"alquilado","no alquilado", "no alquilado"}

De esta manera en tu array de dos dimensiones tienes todo almacenado. Si luego quieres mostrar los que estan o no alquilados haces dos bucles que recorran el array ( dos porque es bidimensional, uno dentro de otro) y pones un if

Si no lo entiendes así puedo hacerte el código comentado.

Browwwnnn

Disculpa con mi insistencia, me entendiste mal o yo me exprese mal jaja, el programa seria así, me pide el ingreso de por ejemplo 5 autos, luego, me pregunta cual quiero alquilar, luego de que ingreso cual quiero alquilar,me hace dos listas, una de alquilados y otra de libres.

Mi idea es la siguiente, luego de que creo un vector "autos" y le ingreso mediante teclado el contenido, creo una variable alquilar, si el valor que ingreso en alquilar es igual a un valor ya existente en el vector "autos", que me mueva ese dato a otro vector "alquilados", y los datos que quedan libres, a otro vector "libres", el tema es que no se como hacer esto ultimo (una vez que ingreso el dato alquilar como hacer los dos vectores "alquilar" y " libres")

MNicolas

Haz dos vectores más.

String[] alquilados = new String[1];
String[] libres = new String[marca.lenght-2] // esto hace que el libres sea del tamaño de marca menos el coche que quitaste porque lo alquilaste

//ahora recorremos el marcas a ver si el valor que metiste en "alquilar existe"

for(int i=0; i<marcas.lenght; i++){
if(marcas.equals(alquilar))
{
alquilados[0]=marcas;
System.out.println("Coche alquilado");
}
else // si no esta alquilado
{
for(int j=0; j<libres.lenght;j++) // recorremos la array de libres
{
if(libres[j]==null) // en el primer hueco que pille vacio
{
libres[j]=marcas; // metemos la marca que no esta alquilada
break; // rompemos el bucle pequeño
}
}
}
}

No lo he probado, tendrá errores seguramente, pero es para que cojas la idea.

Browwwnnn

Gracias por tu respuesta, estuve hablando con el profesor y me dijo que para hacer esto tengo que usar una variable boolean, es decir, si yo tengo un vector "marcas", determinar una variable boolean "alquilados"=false para todos los autos del vector, pero si yo ingreso un valor que ya se encuentra dentro del vector "marcas" que ese valor se cambie a =true, me explico bien?
Lo que no se bien como hacer es como hacer que esa variable boolean se cambie a true cuando yo ingreso un valor ya existente en el vector,

Gracias por su atención.