我正在用另一个单独的驱动程序类创建一个类。汽车租赁公司的汽车类是存储有关汽车的信息,如品牌,型号和注册号,因此使用我可以用来输入新车辆的驾驶员类别,检查车辆是否在租用和不可用并且名称如果雇用的话,是雇主。
我的车类有方法:
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();
}
}
以下是我的Driver类:
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
问题:
无法理解如何转换伪代码 布尔方法到java代码
无法连接驱动程序 用于存储我输入的信息的类,如模型,make 和注册号
答案 0 :(得分:3)
第二
将构造函数更改为此:
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 = "";
}
答案 1 :(得分:1)
第一:为了检索有关&#34;这辆车被雇用的人的信息&#34;或者&#34;哪位司机雇用了这辆车&#34;,您必须先存储该信息。 你会使用什么数据类型? (记住这是&#34; homeworks&#34;,我认为最好不要给我的答案)。
P.S:对变量和非静态/最终属性使用非大写标识符会更好。
答案 2 :(得分: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;
}
答案 3 :(得分:0)
回答你的第二个问题:
你打电话的那一刻:
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;
}
祝你的计划好运!
答案 4 :(得分:0)
当您使用所需参数调用Car
类的构造函数时,默认情况下,这些参数引用将发送到构造函数。
public Car(String Make, String Model, String RegN){
Make = "";
Model = "";
RegN = "";
}
在Car
类构造函数中,Car
类的参数和成员变量具有相同的名称。因此,当调用构造函数时,局部变量将更改为空字符串。并且由于局部变量包含来自调用者的引用,因此调用者中的原始变量也会被更改。
同样,因为您没有为类成员引用创建任何实例,所以它仍然保持为null。
如果在构造函数中使用以下代码段,
this.Make = "";
this.Model = "";
this.RegN = "";
将更改 Car
类成员变量而不是来自调用者的变量。