Как получить значение внутри ArrayList Java

#java #oop #arraylist

#java

Вопрос:

Я пытаюсь получить значение из с в ArrayList. Вот пример моего кода:

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

пересмотр
спасибо всем за ответы, мне, вероятно, следует добавить в код немного больше. в классе Car у меня есть другой метод, который вычисляет общую стоимость, включая налог.

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

Еще раз спасибо

Ответ №1:

Предполагая, что у вашего Car класса есть метод получения для price, вы можете просто использовать

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

где i — индекс элемента.

Вы также можете использовать

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

Вам также необходимо вернуть totalprice из вашей функции, если вам нужно его сохранить

Главная

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

И измените return тип вашей функции

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

Комментарии:

1. привет, спасибо за помощь, я пробовал это, но он говорит, что ожидает int, но обнаружил void. Я не уверен, как это обойти. Еще раз спасибо

Ответ №2:

Вы не указали свой Car тип, но предполагая, что вам нужна цена первого автомобиля, вы могли бы использовать:

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

Обратите внимание, что я изменил название списка с car на cars — это список автомобилей, а не один автомобиль. (Я изменил имя метода аналогичным образом.)

Если вы хотите, чтобы метод обрабатывал только одну машину, вам следует изменить параметр на тип Car :

 public static void processCar(Car car)
  

а затем вызвать его следующим образом:

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

Если вы оставите это как обработку всего списка, было бы целесообразно обобщить параметр на — маловероятно, что вам действительно потребуется, чтобы это было List<Car> . ………. ArrayList<Car> .

Комментарии:

1. Тип в ArrayList должен быть Car, а не Cars 😉

2. @stiank81: Я думаю, вы имели в виду, что комментарий адресован ответу home, а не моему…

3. На самом деле у вас тоже было неправильно, но Петар отредактировал это .. Хотя ничего страшного..

Ответ №3:

основной класс

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

класс car

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

Ответ №4:

Вы должны назвать свой список cars вместо car , чтобы его имя соответствовало его содержимому.

Тогда вы можете просто сказать cars.get(0).getPrice() . И если в вашем Car классе еще нет этого метода, вам нужно его создать.

Ответ №5:

Список может содержать несколько элементов, поэтому метод get принимает аргумент : индекс элемента, который вы хотите получить. Если вам нужно первое значение, то оно равно 0.

Список содержит экземпляры Car, поэтому вам просто нужно сделать

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

или просто

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

car Переменная должна быть названа cars , поскольку это список и, следовательно, содержит несколько машин.

Прочитайте руководство о коллекциях. И научитесь использовать javadoc: все классы и методы задокументированы.

Ответ №6:

Если вы хотите получить цену всех автомобилей, вам нужно выполнить итерацию по списку массивов:

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

Ответ №7:

 import java.util.*;
import java.lang.*;
import java.io.*;

class hari
{
public static void main (String[] args) throws Exception
{  Scanner s=new Scanner(System.in);
    int i=0;
    int b=0;
    HashSet<Integer> h=new HashSet<Integer>();
    try{
        for(i=0;i<1000;i  )
    {   b=s.nextInt();
        h.add(b);
    }
    }
    catch(Exception e){
        System.out.println(h "," h.size());
    }
}}
  

Комментарии:

1. Это решение идеально подходит для вашего вопроса… Я надеюсь