2011-10-31 15 views
10

ArrayList'te ile bir değer elde etmeye çalışıyorum. İşte benim kod bir örnektir: teşekkürler tüm cevaplar içinArrayList java'nın içinde bir değer nasıl elde edilir

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()); 
} 

revizyon, muhtemelen biraz daha koduna eklemek gerekir. Araba sınıfında, vergi dahil toplam maliyeti hesaplayan başka bir yöntem var. Ana sınıfında

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); 
    } 
} 

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? 
    } 
} 

tekrar teşekkürler

cevap

10

fiyata alıcı yöntemi Car sınıfı vardır varsayarsak, sadece i elemanın endeksidir

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

kullanabilirsiniz.

Ayrıca bunu

ana

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; 
    } 
} 

depolamak Ve return türünü değiştirmek gerekiyorsa Ayrıca işlevinden totalprice dönmek gerekir

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

kullanabilirsiniz senin işlevin

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

merhaba, yardım için teşekkürler, denedim ama bir int ama bulduğu boşluk bekliyor diyor. Bunu nasıl halledeceğimi bilmiyorum. Tekrar teşekkürler – blackStar

4

Sen Car türü gösterilir, ancak önce arabanın fiyatı isterdim varsayarak değil, şunu kullanabilirsiniz:

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

Listenin adını değiştirdiğimi unutmayın car - cars - bu, listesinin aralığından, tek araca değil.

public static void processCar(Car car) 

: (. Ben benzer şekilde yöntem adı değiştirdik)

yalnızca yöntem tek araba işlemek istiyorsanız, tip Car olması için parametreyi değiştirmelisiniz ve sonra böyle diyoruz: Eğer yapmak Eğer

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

tüm listeyi işleme gibi bırakmak, oparametreyi genelleme değer olurdu- bunun gerçekten bir ArrayList<Car> olmasını gerektirmesi pek olası değil.

+0

Tipi Araç, olmalı değil Otomobil ;-) – stiank81

+0

stiank81 @: ben öyle ev kullanıcısı cevap değil mayın hitaben şu yorumunu ... –

+0

Aslında çok seninkinde yanlışı vardı, ama Petar düzenlenmiş geliyordu düşünüyorum hayır .. hayır büyük bir anlaşma .. – stiank81

0

Liste, birkaç öğe içerebilir, bu nedenle get yöntemi bir argüman alır: almak istediğiniz öğenin dizini. İlkini istiyorsan, o zaman 0.

liste Araba örneklerini içerir, bu yüzden bir listesi ve bu nedenle çok sayıda arabaya içerdiğinden sadece,

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

ya da sadece

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

car değişken cars adlı olmalıdır yapmak zorundayız.

tutorial about collections okuyun. Ve javadoc kullanmayı öğrenin: tüm sınıflar ve yöntemler belgelenmiştir. Adından içeriğini eşleşecek şekilde

0

Sen Listenizi cars yerine car isim olmalıdır.

Sonra sadece cars.get(0).getPrice() söyleyebiliriz. Ve eğer Car sınıfınız henüz bu yönteme sahip değilse, onu oluşturmanız gerekir.

0

Eğer dizi listesi üzerinden yineleme gereken araçların fiyat almak isterseniz:

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

ana sınıfa

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()); 
     } 
    } 
} 

araç sınıfı

ArrayList
İlgili konular