Java 从不同类打印到字符串
我想弄明白这一点已经有一段时间了,我已经搜索了各种各样的问题,但我不认为我离得更近了 我有一个超类车辆,它提供了车辆的各种细节。然后我有了从Vehicle继承的Car类 我正试图打印我的汽车类的toString,它超过了汽车类 基本上我想打印出每辆车的信息 这是我的主要任务Java 从不同类打印到字符串,java,tostring,superclass,Java,Tostring,Superclass,我想弄明白这一点已经有一段时间了,我已经搜索了各种各样的问题,但我不认为我离得更近了 我有一个超类车辆,它提供了车辆的各种细节。然后我有了从Vehicle继承的Car类 我正试图打印我的汽车类的toString,它超过了汽车类 基本上我想打印出每辆车的信息 这是我的主要任务 public static void main(String []args) { Car Ford = new Car(Red, 4, true); //Ford = F
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;
}
}
这是我的汽车课
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
我很感激任何意见,我知道我可能在做一些非常愚蠢的事情,这很明显,但我就是看不到
谢谢
我希望我的输出像“福特是红色的,有四个轮子
是一辆敞篷车”,带有来自车辆和汽车的粗体文字
分别上课
如果要包含这些单词,则必须告诉它在toString()中包含这些单词
例如,如果要打印“有4个轮子”,则不能只执行getNumberOfWheels()
。否则你只能得到4分。您必须执行类似于“has”+getNumberOfWheels()+“wheels”
的操作。如果你不告诉它包含所有的单词,它就不会知道要包含它们
我希望我的输出像“福特是红色的,有四个轮子,是敞篷车”
对于您的上述要求,简单的解决方案:
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);
}
//change the constructor
public Vehicle(String vehicleColour, int numberOfWheels)
{
setNumberOfWheels(this.numberOfWheels);
setVehicleColour(this.vehicleColour);
}
我正试图打印我的汽车类的toString,它超过了汽车类
车辆等级中的
//change in the constructor
public Car(String vehicleColour, int numberOfWheels, boolean convertible) {
setNumberOfWheels(numberOfWheels);
setVehicleColour(vehicleColour);
setConvertible(convertible);
}
//change the constructor
public Vehicle(String vehicleColour, int numberOfWheels)
{
setNumberOfWheels(this.numberOfWheels);
setVehicleColour(this.vehicleColour);
}
基本上我想打印出每辆车的信息
首先,你给我们的代码甚至不会编译。在
Vehicle
类中,vehicleColour
被定义为字符串,但是getVehicleColour()
尝试返回一个双精度。很抱歉,我编辑了这篇文章。@Keeron如果我的回答正确,你能告诉我吗?@Md.SifatulIslam,你的回答远远超出了我最初的问题。谢谢谢谢DM,我能处理好这部分,我只是想让人们知道我想要的最终结果。现在我得到了类似“Ford为null,有00个轮子,是false”的东西。尽管您创建了接受参数的构造函数,但这些构造函数中似乎没有任何代码来实际设置这些参数的局部变量。如果你将numberOfWheels
传递给一个构造函数,那么这个构造函数应该设置this.numberOfWheels
(或者调用一个你所做的super
构造函数来实现这一点)。多亏了D M,我没有意识到我需要在构造函数中设置值,这在事后看来是相当明显的。我确实说过我可能在做傻事!谢谢你的帮助。谢谢你的详细和翔实的回复,我真的很感激!我甚至从来没有想过在构造函数类中设置值,我假设我可以从字符串中获取值,但是很明显,因为我得到的是默认值,所以我知道有些地方不对。再次感谢@基隆我很乐意帮助你!别忘了投赞成票:p