#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. Это решение идеально подходит для вашего вопроса… Я надеюсь