El código que he creado tiendas de la primera línea del archivo de texto, crea un nuevo Vehículo objeto y lo coloca en la matriz en la primera posición de null y almacena la misma línea en cada valor nulo de la matriz. Necesito que sea capaz de:

Almacenar el contenido de la primera línea, a continuación, almacenar un Vehículo nuevo objeto en el primer lugar en la matriz de la que es nulo. A continuación, repita hasta que no hay más líneas.

Creo que es un problema con mi bucle for.
Nota – estoy obligado a utilizar la Matriz en lugar de ArrayList

public void addVehicle(Vehicle[] Honda) throws FileNotFoundException
{

        if(canAddVehicle() == true)
        {
        for(int i = 0; i < vehicles.length; i++)
        {
            if(vehicles[i] == null)
            {
                Scanner reader = new Scanner(file);

                Honda[i] = new Vehicle();
                Honda[i].readRecord(reader);
                vehicles[i] = Honda[i];

                reader.close();
            }
        }
            System.out.println("Vehicle Added!");
        }
        else
        {
            System.out.println("You can not add more than 4 vehicles.");
        }
}

Clase de vehículo:

public void readRecord(Scanner reader)
{

    setMake(reader.next());
    setModel(reader.next());
    setYear(reader.nextInt());
    setvin(reader.next());
    setValue(reader.nextDouble());
    setMilesDriven(reader.nextInt());
    setLastOilChange(reader.nextInt());



}

Archivo de datos:

Hyundai Sonata  2010    ABC236347NM2N2NW2   18455.34    8765    7567
Chevy   Blazer  1998    1234H32343LMN3423   29556.65    38559   38559

//EDITAR\
Constraits: no puedo crear cualquier públicos nuevos métodos o constructores, y no puedo tener ninguna clase adicional de datos a nivel de

  • Usted debe pegarse a este hilo – stackoverflow.com/questions/8410050/…
  • lo siento, he estado hasta por 9 horas seguidas ahora tratando de terminar esto y es realmente difícil incluso pensar. sólo tengo que hacer esto
  • Usted tiene que fijar el contenido del archivo de datos de modo que puede sugerir.
  • Editado mi post para mostrar
  • Echa un vistazo a Jon post (una solución elegante). Sin embargo, en el código fragmento, usted tiene que mover Escáner lector = new Scanner(archivo); antes de comenzar el bucle y lector.close();* después de que el bucle.
InformationsquelleAutor MJ93 | 2011-12-07

2 Comentarios

  1. 2

    Estás bucle dentro de la readRecord método, incluso a pesar de que se supone que solamente un objeto, ¿no?

    Es posible que usted puede simplemente eliminar la while bucle – a pesar de que, a continuación, se basa en la addVehicle de llamadas saber cuántas entradas están en el archivo.

    Parece más probable que usted debe tener un método para leer de todo, desde un archivo, llenar un List<Vehicle> y devolverlo. Por ejemplo:

    public List<Vehicle> readVehicles(String file)
    {
        Scanner reader = new Scanner(file);
    
        List<Vehicle> vehicles = new ArrayList<Vehicle>();
        try
        {
            while (reader.hasNextLine())
            {
                vehicles.add(Vehicle.readFromScanner(reader));
            } 
        }
        finally
        {
            reader.close();
        }
        return vehicles;
    }
    
    //In vehicle
    public static Vehicle readFromScanner(Scanner scanner)
    {
        String make = reader.next();
        String model = reader.next();
        int year = reader.nextInt();
        String vin = reader.next();
        //Don't use double for currency values
        BigDecimal value = reader.nextBigDecimal();
        int milesDriven = reader.nextInt();
        //Shouldn't this be some sort of date type?
        int lastOilChange = reader.nextInt();
    
        //I'll assume you have a constructor like this
        return new Vehicle(make, model, year, vin, value, milesDriven,
                           lastOilChange);
    }
    • Ahh sí, yo no sé por qué yo tenía el bucle while no, yo siento que sea tan tarde y he estado trabajando en esto durante 9 horas seguidas tratando de terminarlo. No he aprendido acerca de ListArrays aún así no estoy seguro de cómo hacer que en todos los
    • Véase mi edición, pero para ser honesto, usted puede ser mejor hablar con tu profesor si se le ha dado una tarea que funcionaría mucho mejor el uso de conceptos no ha encontrado todavía.
    • Gracias por la info sobre ArrayLists, supongo que debería haber explicado la primera: la parte del código que ya estaba prevista para mí, los métodos que creo debe ser privado (ayudante) métodos. Así que no voy a ser capaz de crear un nuevo método dentro de la clase de Vehículo. Es un requisito
    • Es muy difícil responder a una pregunta cuando hay obstáculos que no se les ha dicho acerca de. La estructura del código original es un poco extraño, por decir lo menos. Podemos ser capaces de ayudar más si nos dan más información.
    • Lo que estoy limitado a: no puedo añadir nuevos métodos públicos o constructores, y no puedo declarar cualquier Clase adicional de datos a nivel de
    • Así que los métodos que he dado de acceso de paquete en lugar de público. Pero ¿tenía para implementar el algo extraño método que usted ha declarado en su post original? (El addVehicle uno.) Parece fundamentalmente extraño dado que la firma y su comportamiento.
    • No, no me tienen que agregar que, originalmente tenía el código para que sólo 1 línea se puede leer en cualquier momento dado, así que funcionó. Pero gracias, voy a tratar de que
    • Lo sentimos, no, el chat no funciona bien con mi flujo de trabajo.

  2. 0

    Encontrado mi solución!

    public boolean addVehicle(Vehicle[] Honda) throws FileNotFoundException
    {
        boolean found = false;
        int position = 0;
            if(canAddVehicle() == true)
            {
                for(int i = 0; i < vehicles.length && !found; i++)
                {
                    if(vehicles[i] == null)
                    {
                        position = i;
                        found = true;
                    }
                }
    
                   Scanner reader = new Scanner(file);
                   while(reader.hasNext())
                   {
                       Honda[position] = new Vehicle();
                       Honda[position].readRecord(reader);
                       vehicles[position] = Honda[position];
                       position++;
    
                   }
                    reader.close();
                    return true;
            }
            return false;
    }

Dejar respuesta

Please enter your comment!
Please enter your name here