У меня есть 4 класса (я буду сокращать их для удобства).
public class PoliceStation{
public String name;
ArrayList<Owner> owners = new ArrayList<>();
public boolean addOwner(Owner owner) {
if(findOwnerID(owner)) {
this.owners.add(owner);
System.out.println("Owner "+owner.getName()+" added.");
return true;
}
System.out.println("Owner "+owner.getName()+" with "+owner.getOwnerIDNumber()+" not added.");
return false;
}
и еще несколько классов для поиска объектов-владельцев.
И Owner
class:
import java.util.ArrayList;
public class Owner {
String name;
String dateOfBirth;
long ownerIDNumber;
String address;
ArrayList<Vehicle> vehicles=new ArrayList<Vehicle>();
ArrayList<Fine> penalties = new ArrayList<Fine>();
public Vehicle findVehicleObject(String plateNum) {
for(int i=0;i<vehicles.size();i++) {
System.out.println(i);
if(vehicles.get(i).getPlateNumber().equalsIgnoreCase(plateNum)) {
System.out.println("Vehicle with that plate number "+plateNum+" exists.");
return vehicles.get(i);
}
}
System.out.println("Vehicle doesnt exist with "+plateNum);
return null;
}
, который состоит из методов addVehicle, findVehicle и т. Д.
Класс автомобиля:
public class Vehicle extends Owner{
PoliceStation ps = new PoliceStation("center");
String plateNumber;
String name;
String type;
//String serialNum;
public Vehicle(String driverName, String dateOfBirth,long ownerID, String address,String plateNumber, String name, String type) {
super(driverName,dateOfBirth,ownerID,address);
this.plateNumber = plateNumber;
this.name = name;
this.type = type;
}
С методом findVehicle, который должен возвращать объект транспортного средства с номером машины:
public Vehicle findVehicle1(String plateNum) {
if(this.plateNumber==plateNum) {
System.out.println("Lookin "+plateNum);
return super.findVehicleObject(plateNum);
}else return null;
}
И после этого у меня четвертый класс с именемRadioCam
, который читает plateNumber
из машины: (примечание: следующий код написан плохо, потому что я пытался заставить его работать безуспешно)
class RadioCam{
public void detection(double speed) {
System.out.println("Vehicle detected.");
//speed would be a variable that the radioCam would return using radiowaves and doppler effect
if(speed>50) {
String plateNumber = takePicture();
Vehicle veh = new Vehicle(plateNumber);
veh = veh.findVehicle1(plateNumber);//<-- null
System.out.println("-------------------"+veh.getName());//<- null here as well
Owner ownerFine = ps.getOwner(veh);
ownerFine= ps.getOwner(veh);
System.out.println("sssssss"+ownerFine.getName());
//ownerFine = PoliceStation.getOwner(veh);
ps.addFine(ownerFine, "speed violation", veh);//<- so this method doesnt work in the end becuse ownerFine and veh are null
, который возвращает ноль veh = veh.findVehicle1(plateNumber);
.И возвращаясь к классу Владельца в public Vehicle findVehicleObject(String plateNum) {
for(int i=0;i<vehicles.size();i++) {
<- vehicle.size () равен 0, так что он не проходит через транспортные средства вообще.Я понял, что мне нужен объект владельца из массива, чтобы добраться до объекта транспортного средства из массива, но в этом случае мне нужен объект транспортного средства из plateNumber (который является частью класса Vehicle) и из объекта транспортного средства, чтобы получитьобъект владельца, которому принадлежит объект транспортного средства. </p>
Надеюсь, я достаточно хорошо объяснил свои проблемы.