2016-11-02 8 views
-1

私は車と呼ばれる抽象クラスでidPlateという配列を作成しました:私はからアレイへの書きたいなぜ私の配列はnullになりますか? (Java)の

public class Car extends Vehicle 
{ 
    public void setIDPlate(String plate, int num) 
    { 
     idPlate[num] = plate; 
    } 

    public String getIDPlate(int num) 
    { 
     return idPlate[num]; 
    } 
} 

:私は車を継承カーと呼ばれる別のクラスを持っている

public abstract class Vehicle 
{ 
    String[] idPlate = new String[20]; 

    public abstract void setIDPlate(String plate, int num); 
    public abstract String getIDPlate(int num); 
} 

public class CarParkManager 
{ 
    String returnToMenu = "Y"; 
    String[] vehicle = new String[20]; 

    public void menu() 
    { 
     while ("Y".equals(returnToMenu)) { 
      System.out.println("*********Menu*********"); 
      System.out.println("Type appropriate number to select option:"); 
      System.out.println("1- Add new vehicle to Car Park"); 

      System.out.println("3- List Vehicles in Car Park"); 

      Scanner scan = new Scanner(System.in); 
      String listnumber = scan.nextLine(); 

      if ("1".equals(listnumber)) { 
       addVehicle(vehicle); 
      } 

      if ("3".equals(listnumber)) { 
       listVehicles(vehicle); 
      } 
     } 
    } 

    private void addVehicle(String v[]) 
    { 
     System.out.println("Enter car ID plate"); 
     Scanner input = new Scanner(System.in); 
     String vehicleid; 
     vehicleid = input.nextLine(); 

     for (int x = 0; x < v.length; x++) { 
      if (v[x] == null) { 
       v[x] = "Car"; 
       Car car = new Car(); 
       car.setIDPlate(vehicleid, x); 
       break; 
      } 
     } 
    } 

    public void listVehicles(String v[]) 
    { 
     System.out.println("****List Vehicle in Car Park****"); 

     for (int x = 0; x < 20; x++) { 
      if (v[x] == null) { 
       System.out.println("Parking lot " + x + ": Vacant"); 
      } 

      if (v[x] == "Car") { 
       Car getcarid = new Car(); 
       System.out.println("Parking lot " + x + ": " + v[x] + ", ID-" + getcarid.getIDPlate(x)); 
      } 
     } 
    } 
} 

私はFRをプリントアウトすることができるよ:listVehiclesメソッドを使用してアレイからaddVehicle方法および印刷からクラスCarParkManager OM車両の配列が、idPlateがnullのままで、その出力は以下のようである: 駐車場0:車、ID-ヌル

+1

新しい 'Car'(' getcarid')を印刷する直前に作成するので、このオブジェクトの 'idPlate'フィールドは決して初期化されません。 – DNA

+0

私は新しい車を作る必要はありませんでした。ありがとう! – Mark

答えて

0

あなたが行う

Car car = new Car(); // create a new Car 
car.setIDPlate(vehicleid, x); 
// don't do anything with it, throw it away 

Car getcarid = new Car(); // create a new uninitialised car. 
// try to print the uninitialised car. 
System.out.println("Parking lot " + x + ": " + v[x] + ", ID-" + getcarid.getIDPlate(x)); 

私はあなたを疑います最初に1つのメソッドで設定し、別のメソッドで印刷するCarオブジェクトを作成することを意図していました。各メソッドに使用されるCarオブジェクトを渡すことをお勧めします。

0

getIDPlateを呼び出す前にsetIDPlateメソッドを呼び出していないと思います。さらに、idPlateを初期化するコードがないことがわかります。したがって、idPlateのすべての文字列がdefultによってnullになります。私はこれが役立つことを願っています

関連する問題