我一直试图解决这个问题一段时间,我已经搜索了各种问题,但我认为我没有更接近。
我有一个超级车辆,可以提供车辆的各种细节。然后,我的Car类继承自Vehicle。
我正在尝试从我的Car类打印toString,它覆盖了Vehicle类。
基本上我想打印出每辆车的信息。
这是我的主要
public static void main(String []args)
{
Car Ford = new Car(Red, 4, true);
//Ford = Ford.; Tried various things here to no avail, kept getting nullfalse in output
Car Honda = new Car(Blue, 4, false);
System.out.println(Ford.vehicleDetails);
System.out.println("Honda");
}
}
这是我的车辆类
public class Vehicle
{
// Variables
private String vehicleColour;
private int numberOfWheels;
String vehicleDetails;
// Constructor
public Vehicle(String vehicleColour, int numberOfWheels)
{
}
// Getters
public String getVehicleColour()
{
return vehicleColour;
}
public int getNumberOfWheels()
{
return numberOfWheels;
}
// Setters
public void setVehicleColour(String vehicleColour)
{
this.vehicleColour = vehicleColour;
}
public void setNumberOfWheels(int numberOfWheels)
{
this.numberOfWheels = numberOfWheels;
}
// Constructor
public Vehicle ()
{
}
// toString method super
public String toString() {
String vehicleDetails = (getVehicleColour() + "" + getNumberOfWheels());
return vehicleDetails;
}
}
这是我的Car class
public class Car extends Vehicle
{
// Variables
private boolean convertible;
Car vehicleDetails;
// Getter
public boolean getConvertible()
{
return convertible;
}
// Setter
public void setConvertible(boolean convertible)
{
this.convertible = convertible;
}
// Constructor
public Car(String vehicleColour, int numberOfWheels, boolean convertible) {
}
// toString method override
@Override
public String toString() {
return super.toString() + convertible;
}
}
我希望我的输出类似于“福特红色, 4 轮子和是可转换”,带粗体文字分别来自车辆和汽车类。
如何在输出中显示粗体文字?现在我只获取默认值,如null,0和false。
我很欣赏任何输入,我知道我可能正在做一些非常愚蠢的事情,这显然是显而易见的但我却看不到它。
感谢。
答案 0 :(得分:1)
我希望我的输出类似于"福特是红色的,有4个轮子并且是敞篷车"
对于您的上述要求简单解决方案:
System.out.println("The Ford is "+ Ford.toString() );
如果您打算从Ford.toString
获取整个输出,那么在创建Ford
对象时,您还需要传递汽车名称!如下所示,并在构造函数中进行必要的更改!
Car Ford = new Car("Ford","Red", 4, true);
然而,Car
和Vehicle
类中的构造函数已生成,但没有为它们的局部变量赋值!因此.toString()
没有得到任何展示!
所需的更改是:
在主类
System.out.println("The Ford is "+ Ford.toString() );
在汽车类
//change in the constructor
public Car(String vehicleColour, int numberOfWheels, boolean convertible) {
setNumberOfWheels(numberOfWheels);
setVehicleColour(vehicleColour);
setConvertible(convertible);
}
我正在尝试从我的Car类打印toString,它覆盖了Vehicle类。
//change in toString()
@Override
public String toString() {
if(convertible){
return super.toString() +"and is a convertible" ;
}else{
return super.toString() +"and is not a convertible" ;
}
}
车辆类
//change the constructor
public Vehicle(String vehicleColour, int numberOfWheels)
{
setNumberOfWheels(this.numberOfWheels);
setVehicleColour(this.vehicleColour);
}
基本上我想打印出每辆车的信息。
//change the toString()
public String toString() {
String vehicleDetails = (getVehicleColour() + ", has " +getNumberOfWheels()+" wheels");
return vehicleDetails;
}
答案 1 :(得分:0)
我希望我的输出类似于“福特是红色的,有4个轮子 并且是一辆敞篷车“,带有大胆的文字来自车辆和汽车 分别为。
如果你想要包含这些单词,那么你必须告诉它在你的toString()中包含这些单词。
例如,如果您希望它打印“有4个轮子”,那么您不能只执行getNumberOfWheels()
。否则你得到一个4.你必须做"has " + getNumberOfWheels() + " wheels"
之类的事情。如果你没有告诉它包括所有单词,它将不知道包含它们。