2011-10-31 23 views
10

Estoy tratando de obtener un valor de en ArrayList. Aquí está una muestra de mi código:Cómo obtener un valor dentro de un ArrayList java

public static void main (String [] args){ 
    Car toyota= new Car("Toyota", "$10000", "300"+ "2003"); 
    Car nissan= new Car("Nissan", "$22000", "300"+ "2011"); 
    Car ford= new Car("Ford", "$15000", "350"+ "2010"); 

    ArrayList<Car> cars = new ArrayList<Car>(); 
    cars.add(toyota);   
    cars.add(nissan); 
    cars.add(ford); 
} 

public static void processCar(ArrayList<Car> cars){ 

    // in heare i need a way of getting the total cost of all three cars by calling 
    // computeCars() 
    System.out.println(cars.get()); 
} 

revisión gracias a todos por las respuestas, probablemente debería añadir al código un poco más. en la clase Auto, tengo otro método que calcula el costo total, incluido el impuesto.

class Car { 
    public Car (String name, int price, int, tax, int year){ 
     constructor....... 
    } 

    public void computeCars(){ 
     int totalprice= price+tax; 
     System.out.println (name + "\t" +totalprice+"\t"+year); 
    } 
} 

en la clase principal

public static void processCar(ArrayList<Car> cars){ 
    int totalAmount=0; 
    for (int i=0; i<cars.size(); i++){ 
     cars.get(i).computeCars(); 
     totalAmount=+ ?? // in need to add the computed values of totalprice from the Car class? 
    } 
} 

Gracias de nuevo

Respuesta

10

Asumiendo que su clase ha Car un método de obtención de precio, puede simplemente usar

System.out.println (car.get(i).getPrice()); 

donde i es el índice del elemento.

También puede utilizar

Car c = car.get(i); 
System.out.println (c.getPrice()); 

También es necesario volver totalprice de su función si es necesario almacenarlo

principal

public static void processCar(ArrayList<Car> cars){ 
    int totalAmount=0; 
    for (int i=0; i<cars.size(); i++){ 
     int totalprice= cars.get(i).computeCars(); 
     totalAmount=+ totalprice; 
    } 
} 

y cambiar el tipo de return su función

public int computeCars(){ 
    int totalprice= price+tax; 
    System.out.println (name + "\t" +totalprice+"\t"+year); 
    return totalprice; 
} 
+0

hola, gracias por la ayuda, lo intenté pero está diciendo que está esperando un int pero encontró vacío. No estoy seguro de cómo solucionarlo. Gracias de nuevo – blackStar

4

No ha mostrado el tipo de Car, pero suponiendo que querría el precio del primer coche, se puede utilizar:

public static void processCars(ArrayList<Car> cars) { 
    Car car = cars.get(0); 
    System.out.println(car.getPrice()); 
} 

Tenga en cuenta que he cambiado el nombre de la lista de car a cars - esta es una lista de de automóviles, no un solo auto. (. He cambiado el nombre del método de manera similar)

Si sólo desea el método para procesar un solo coche, debe cambiar el parámetro a ser de tipo Car:

public static void processCar(Car car) 

y luego llamar así:

// In the main method 
processCar(cars.get(0)); 

Si haces dejarlo como el procesamiento de toda la lista, que valdría la pena generalizar el parámetro a List<Car> - es poco probable que realmente requiera que sea ArrayList<Car>.

+0

Escriba en el ArrayList debe ser el coche, no los coches ;-) – stiank81

+0

@ stiank81: Creo que se refería a ese comentario dirigido a la respuesta de la casa, no la mía ... –

+0

En realidad, también la tuvo mal, pero Petar editó No es gran cosa ... – stiank81

0

La lista puede contener varios elementos, por lo que el método get toma un argumento: el índice del elemento que desea recuperar. Si quieres el primero, entonces es 0.

La lista contiene ejemplos de coches, por lo que sólo tiene que hacer

Car firstCar = car.get(0); 
String price = firstCar.getPrice(); 

o simplemente

String price = car.get(0).getPrice(); 

La variable car debe ser nombrado cars, ya que es una lista y por lo tanto contiene varios coches.

Lea el tutorial about collections. Y aprenda a usar el javadoc: todas las clases y métodos están documentados.

0

Debe nombrar su lista cars en lugar de car, de modo que su nombre coincida con su contenido.

Entonces simplemente diga cars.get(0).getPrice(). Y si su clase Car aún no tiene este método, necesita crearlo.

0

Si desea calcular el precio de todos los coches que tienen que recorrer la lista de arreglo:

public static void processCars(ArrayList<Cars> cars) { 
    for (Car c : cars) { 
     System.out.println (c.getPrice()); 
    } 
} 
1

clase principal

public class Test { 
    public static void main (String [] args){ 
     Car thisCar= new Car ("Toyota", "$10000", "2003"); 
     ArrayList<Car> car= new ArrayList<Car>(); 
     car.add(thisCar); 
     processCar(car); 
    } 

    public static void processCar(ArrayList<Car> car){ 
     for(Car c : car){ 
      System.out.println (c.getPrice()); 
     } 
    } 
} 

categoría de coches

public class Car { 
    private String vehicle; 
    private String price; 
    private String model; 

    public Car(String vehicle, String price, String model){ 
     this.vehicle = vehicle; 
     this.model = model; 
     this.price = price; 
    } 

    public String getVehicle() { 
     return vehicle; 
    } 

    public String getPrice() { 
     return price; 
    } 

    public String getModel() { 
     return model; 
    } 
} 
Cuestiones relacionadas