在此示例中如何使用toString?

时间:2019-12-06 07:53:22

标签: java tostring

当前正在做一些作业,并且遇到了麻烦-我不确定如何正确使用toString。这是作业问题:

创建一个名为Vehicle的类,该类充当车辆类型的超类。 Vehicle类包含车轮数和每加仑平均英里数的私有变量。 Vehicle类还包含一个构造函数,该构造函数具有用于表示车轮数量和每加仑平均英里数的整数参数,以及一个display()方法,该方法使用toString()方法打印所需的输出以将整数值转换为String。

创建两个子类Car和MotorCycle,它们扩展了Vehicle类。 每个子类都包含一个构造函数,该构造函数接受“每加仑英里数”值作为参数,并强制将车轮数设置为适当的值,例如对于MotorCycle为2,对于Car为4。使用超类构造函数来设置wheel和mpg数据字段(使用super关键字)。

编写一个UseVehicle类以实例化每个子类的一个对象并显示该对象的值。 将文件另存为Vehicle.java,Car.java,MotorCycle.java和UseVehicle.java

public class Vehicle {

    protected int wheelnumber;
    protected int mpg;

    Vehicle (int wheelnum, int aMpg) {

    wheelnumber = wheelnum;
    mpg = aMpg;

    }

    public void display() {
    System.out.println("Wheels: " + toString(wheelnumber) + " Mpg: " + toString(mpg));

    }

}

public class Car extends Vehicle{

    Car (int CarMPG) {

        super(4, CarMPG);
        }
}

public class Motorcycle extends Vehicle{

    Motorcycle (int MotorcycleMPG) {

        super(2, MotorcycleMPG);

    }

}
public class UseVehicle {

    public static void main(String[] args) {
        Car Car1 = new Car(30);
        Motorcycle Motorcycle2 = new Motorcycle(60);

        System.out.print("Car--> ");
        Car1.display();
        System.out.print("Motorcycle—> ");
        Motorcycle2.display();

    }

}

3 个答案:

答案 0 :(得分:2)

  

使用toString()方法打印所需的输出,以将整数值转换为String。

在这句话中,老师指的是Integer.toString(),请参见Integer课堂。 the overload Integer.toString(int i)

alternatives of converting an integer to a string,其中一些似乎更简单。但是老师可能有理由要求这种特殊方法。

答案 1 :(得分:2)

这里有几个问题。 一,您的问题是,转盘号和mpg应该是私有的。 其次,数据类型应为Integer。希望下面能解决您的问题。

public class Vehicle {

  //should be private as per question
  private Integer wheelnumber;
  private Integer mpg;

  Vehicle (int wheelnum, int aMpg) {
    wheelnumber = wheelnum;
    mpg = aMpg;
  }

  public void display() {
    System.out.println("Wheels: " + wheelnumber.toString + " Mpg: " + mpg.toString);
  }

}

现在,要详细说明,方法toString()是在Java Object类中定义的,默认情况下定义的任何类都会对其进行扩展。

您使用的数据类型“ int”是一个primitive data type(直接从C语言获得-简单但不是面向对象的方法),它不会扩展Java Object类。因此,不能将toString()方法与原始数据类型的任何实例一起使用。

Integer”数据类型是Java API中定义的类,它扩展了Object类并在其中定义了toString()方法。因此,可以将toString()方法与此类的任何实例一起使用。

话虽如此,如果您绝对必须将“ int”变量转换为String,我建议您执行以下操作:

int i = 10;
System.out.println("Value of i: " + Integer.toString(i));

请注意,可以很容易地将int或Integer转换为字符串,而无需调用toString()方法,因为Java与字符串连接时会自动为您执行此操作-

int p = 10;
Integer q = new Integer(20); 
System.out.println("value of p:" + p + ", q:" + q);

但是,这不是常规方式,我想这不是您的老师在这项作业中想要的。

答案 2 :(得分:0)

我会在Vehical上实现toString()

public class Vehicle {

    protected int wheelnumber;
    protected int mpg;

    Vehicle (int wheelnum, int aMpg) {
        this.wheelnumber = wheelnum;
        this.mpg = aMpg;
    }

    public void display() {
        System.out.println(this.toString());
    }

    @Override
    public String toString() {
        return "Wheels: " + this.wheelnumber + " Mpg: " + this.mpg;
    }
}