1

別の別のドライバークラスでクラスを作成しています。レンタカークラスは、レンタカー会社がメーカー、モデル、登録番号などの車に関する情報を保存するためのものです。これにより、ドライバークラスを使用して、新しい車を入力したり、車がレンタルされているかどうかを確認したり、名前を付けたりできます。それが雇われている場合は雇い主の。

メソッドを使用した私の車のクラス:

public class Car {

private String Make;
private String Model;
private int RegistrationNum;

public Car(String Make, String Model, String RegN){
    //Constructor,
    //stores the make, model and registration number of the new car
    //sets its status as available for hire.
    Make = "";
    Model = "";
    RegN = "";

}

public String getMake(){
    return Make;

}

public String getModel(){
    return Model;

}

public boolean hire(String newHirer){

    {
  //Hire this car to the named hirer and return true. 

        return true;
    }
  //Returns false if the car is already out on hire.



}

public boolean returnFromHire(){

    {
 //Receive this car back from a hire and returns true.
        return true;
    }

 //Returns false if the car was not out on hire     


}

public int getRego(){


 //Accessor method to return the car’s registration number      

    RegistrationNum++;
    return RegistrationNum;
    }



public boolean hireable(){
 //Accessor method to return the car’s hire status.     



    {
 //returns true if car available for hire           
    return true;    
    }
}

public String toString(){
 //return car details as formatted string
 //output should be single line containing the make model and reg number
 //followed by either "Available for hire" or "On hire to: <name>"


    return "Vehicle ID number: "+ getRego()+"-"+"Make is: "+ getMake()+"-"+"Model is: "+getModel();


}


}

以下は私のドライバークラスです:

  import java.util.*;
  public class CarDriver {
  static Car car1;

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Scanner scan = new Scanner(System.in);


{
    System.out.println("Make?");
    String Make=scan.nextLine();
    System.out.println("Model");
    String Model=scan.nextLine();
    System.out.println("Registration number?");
    String RegNum=scan.nextLine();

    car1 = new Car(Make,Model,RegNum);


    System.out.println("What you input :");

    System.out.println(car1.toString());
}}

 }

私の出力:

Make?
carmake
Model
carmodel
Registration number?
12345t
What you input :
Vehicle ID number: 1-Make is: null-Model is: null

問題:

  1. ブールメソッドの擬似コードをJavaコードに変換する方法を理解できません

  2. モデル、メーカー、登録番号など、入力した情報を保存するためにドライバークラスを接続できません

4

5 に答える 5

3

2位

コンストラクターを次のコンストラクターに変更します。

public Car(String Make, String Model, String RegN){
    this.Make = Make;
    this.Model= Model;
    this.RegN = RegN;
}

以前のコンストラクターに問題がありました。基本的には、コンストラクター引数を取得し、それらすべてを ""(空の文字列)に設定するだけでした。そんなことはしたくありません。インスタンスフィールドに引数値を割り当てたいとします。インスタンスフィールドにアクセスする場合は、キーワードthisを使用する必要があります。

public Car(String Make, String Model, String RegN){
//Constructor,
//stores the make, model and registration number of the new car
//sets its status as available for hire.
Make = "";
Model = "";
RegN = "";

}

于 2012-04-19T09:32:09.600 に答える
1

1番目:「この車を誰に雇ったか」または「どのドライバーがこの車を雇ったか」に関する情報を取得するには、最初にその情報を保存する必要があります。どのデータ型を使用しますか?(これは「宿題」であることを忘れないでください。私の答えは出さないほうがいいと思います)。

PS:変数および非静的/最終属性には大文字以外の識別子を使用することをお勧めします。

于 2012-04-19T09:59:18.330 に答える
0

コードでわかるように、コンストラクターでCarインスタンスのフィールドを設定していません。あなたはこのようにsmthを書くべきです:

public Car(String Make, String Model, String RegN){
    //Constructor,
    //stores the make, model and registration number of the new car
    //sets its status as available for hire.
    this.Make = Make;
    this.Model = Model;
    this.RegN = RegN;
}
于 2012-04-19T09:37:50.120 に答える
0

2番目の質問への回答:

あなたが電話した瞬間:

car1 = new Car(Make,Model,RegNum); 

Carクラスのコンストラクターは、指定した変数とともに呼び出されます。作成したコンストラクターを見ると、次のようになります。

public Car(String Make, String Model, String RegN){        
   Make = "";    
   Model = "";    
   RegN = "";   
}    

指定した変数がCarクラスのローカル変数に設定されていないことがわかります。これを修正するには、次のように変更する必要があります。

public Car(String Make, String Model, String RegN){        
   this.Make  = Make;    
   this.Model = Model;    
   this.RegN   = RegN;   
}    

あなたのプログラムで頑張ってください!

于 2012-04-19T09:38:40.633 に答える
0

必要なパラメーターを使用してクラスのコンストラクターを呼び出す場合Car、デフォルトでは、それらのパラメーター参照がコンストラクターに送信されます。

public Car(String Make, String Model, String RegN){        
   Make = "";    
   Model = "";    
   RegN = "";   
} 

クラスコンストラクターでは、Carクラスのパラメーターとメンバー変数はCar同じ名前です。したがって、コンストラクターが呼び出されると、ローカル変数は空の文字列に変更されます。また、ローカル変数には呼び出し元からの参照が含まれているため、呼び出し元の元の変数も変更されます。繰り返しますが、クラスメンバー参照へのインスタンスを作成していないため、それでもnullのままです。コンストラクターで次のコードセグメントを使用する場合、

this.Make = "";    
this.Model = "";    
this.RegN = ""; 

Car呼び出し元からの変数の代わりに、クラスメンバー変数が変更されます。

于 2014-07-23T08:15:12.557 に答える