Как получить значение внутри java-массива ArrayList
Я пытаюсь получить значение из с в 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
имеет метод getter для цены, вы можете просто использовать
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;
}
Ответ 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>
.
Ответ 3
Вы должны назвать свой список cars
вместо car
, чтобы его имя соответствовало его контенту.
Тогда вы можете просто сказать cars.get(0).getPrice()
. И если ваш класс car
еще не имеет этого метода, его необходимо создать.
Ответ 4
основной класс
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());
}
}
}
класс автомобиля
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;
}
}
Ответ 5
Список может содержать несколько элементов, поэтому метод get принимает аргумент: индекс элемента, который вы хотите получить. Если вы хотите первый, то он 0.
Список содержит экземпляры автомобилей, поэтому вам просто нужно сделать
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());
}
}
}