2016-06-26 4 views
0

この場合、classの内容にアクセスする必要があります:ParkingMeter別のクラスの別のメソッド:public static void checkTheCar(ParkedCar pc, ParkingMeter pm)のパラメータを使用しますが、その方法はわかりません。方法checkTheCarParkingMeterから整数を検索し、正しい範囲内にあるかどうかを確認する必要があります。 アドバイスをいただければ幸いです。javaのパラメータでクラスの内容にアクセスしていますか?

public static class ParkingMeter { 

    int time; 

    public ParkingMeter(int hours,int minutes){ 
     time = (getMinutes(hours,minutes)); 

    } 
    private int getMinutes(int hours, int minutes){ 
      int time = (hours * 60) + minutes; 
     return time; 
     } 
} 

public static class ParkedCar{ 

    String CompanyName;    // Company name 
    String Model;     // Car model 
    String Color;     // Car color 
    String PlateNumber;    // License plate number 
    String Minutes;     // number of minutes parked 

    public ParkedCar(String companyName, String model, String color,String plate, String minutes){ 
     CompanyName = companyName; 
     Model = model; 
     Color = color; 
     PlateNumber = plate; 
     Minutes = minutes; 
    } 
} 
public static class PoliceOfficer{ 
    String OfficerName; 
    String BadgeNumber; 

    public PoliceOfficer(String name,String badge){ 
     OfficerName = name; 
     BadgeNumber = badge; 
    } 
    public static void checkTheCar(ParkedCar pc, ParkingMeter pm){ 
     // do something 

    } 

    } 

答えて

0

クラスのデザインはいくつかの作業を必要とします。初心者のための4つのもの... 1)インスタンスデータのカプセル化 - getter/setterを使用したプライベートインスタンス変数2)変数名にcamelCaseを使用する3)パーキングメーターでデータを設定/アクセスする方法の変更に注意してくださいクラス。 4)は、あなたのメインプログラムの結果を簡単に印刷できるように、あなたのParkedCarクラスにtoString()メソッドを追加しました。

public class Parking { 

    public static void main(String[] args) { 
     //PoliceOfficer po = new PoliceOfficer("John Policeman", "4599BDG"); 
     ParkedCar pc = new ParkedCar("Lexus", "IS250", "White", "7GHK111", 90); 
     ParkingMeter pm = new ParkingMeter(2, 30); 
     PoliceOfficer.checkTheCar(pc, pm); 
    } 

    public static class ParkingMeter { 

     private int time, hours, minutes; 

     public ParkingMeter(int hours, int minutes) { 
      this.hours = hours; 
      this.minutes = minutes; 
      setTime(hours, minutes); 
     } 

     private void setTime(int hours, int minutes) { 
      this.time = (hours * 60) + minutes; 
     } 
     public int getTime() { 
      return time; 
     } 

     public int getHours() { 
      return hours; 
     } 
     public void setHours(int hours) { 
      this.hours = hours; 
     } 

     public int getMinutes() { 
      return minutes; 
     } 
     public void setMinutes(int minutes) { 
      this.minutes = minutes; 
     } 

    } 

    public static class ParkedCar { 

     private String make; // Company name 
     private String model; // Car model 
     private String color; // Car color 
     private String plateNum; // License plate number 
     private int minutes; // number of minutes parked 

     public ParkedCar(String make, String model, String color, 
      String plate, int minutes) { 
      this.make = make; 
      this.model = model; 
      this.color = color; 
      this.plateNum = plate; 
      this.minutes = minutes; 
     } 

     @Override 
     public String toString() { 
      return color + " " + make + " " + model + ", plateNum=" + plateNum + " "; 
     } 

    } 

    public static class PoliceOfficer { 
     private String officerName; 
     private String badgeNumber; 

     public PoliceOfficer(String name, String badge) { 
      this.officerName = name; 
      this.badgeNumber = badge; 
     } 

     public String getOfficerName() { 
      return officerName; 
     } 

     public void setOfficerName(String officerName) { 
      this.officerName = officerName; 
     } 

     public String getBadgeNumber() { 
      return badgeNumber; 
     } 

     public void setBadgeNumber(String badgeNumber) { 
      this.badgeNumber = badgeNumber; 
     } 

     public static void checkTheCar(ParkedCar pc, ParkingMeter pm) { 
      System.out.println(pc.toString() + " has been parked for : " + pm.getTime() + " minutes"); 
     } 
    } 

} 
+0

素晴らしい答えですが、私はなぜあなたが '@ Override'を使用したのかと不思議に思っています。 – Ronald

+0

@Ronald:toString()はObjectから継承されたメソッドなので、ここではオーバーライドされています。このアノテーションはこれを指定します。コードをコンパイルするのに使用する必要はありませんが(他のいくつかのアノテーションにはそれが必要です)、継承されたクラスやインタフェースのメソッドをオーバーライドするときは常にこのアノテーションを使用することをお勧めします。 –

+0

@Ronald:おそらくgetter/setterをParkedCarに追加して、デザインを一貫させるべきでしょう。 –

0

あなたはParkingMeterクラス

public static class ParkingMeter { 

int time; 

public int getTime() { 
    return time; 
} 

public ParkingMeter(int hours,int minutes){ 
    time = (getMinutes(hours,minutes)); 

} 
private int getMinutes(int hours, int minutes){ 
    int time = (hours * 60) + minutes; 
    return time; 
}} 

でパブリックメソッドgetTimeを作ることができ、checkTheCarであなたはそのようにそれを使用する:

public static void checkTheCar(ParkedCar pc, ParkingMeter pm){ 
    int time = pm.getTime(); 
} 
関連する問題