构建我自己的类?

时间:2014-10-26 19:00:40

标签: java eclipse class methods

我在学习如何编写和使用自己的课程时遇到了麻烦。例如;

import java.text.NumberFormat;

public class BikeCommute {

private String route;
private double distanceTraveled;
private double timeRequired;
private String dateTraveled;
private String mode;
private double gallonsSaved;
final private int mpg = 25;


public BikeCommute(String mode, String dateTraveled, String route, 
        double distanceTraveled, double timeRequired)
{
    mode = this.mode;
    route = this.route;
    distanceTraveled = this.distanceTraveled;
    timeRequired = this.timeRequired;
    dateTraveled = this.dateTraveled;
}

public double gallonsCalculated(){
    gallonsSaved = distanceTraveled/mpg;
    return gallonsSaved;

}

public double getGallons(){
    return gallonsSaved;
}

public String toString(){

    return mode + route + distanceTraveled + timeRequired + dateTraveled + gallonsSaved;
}
}

我正在尝试编写一个名为BikeCommute的课程,该课程将读取路线,交通方式,行驶距离,所需时间以及行程旅行的日期,计算通过划分距离节省多少加仑气体以每加仑英里数行驶,并输出路线,模式,行驶距离,所需时间,行驶日期和加仑保存。但是,当我运行它时,它返回nullnull0.0null0.0。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

作业是从右到左。取代

mode = this.mode;

this.mode = mode

BikeCommute

中的其他字段变量相同

答案 1 :(得分:1)

你有这些错误的方法:

mode = this.mode;

应该是:

this.mode = mode;

答案 2 :(得分:0)

您的问题是关于此特定课程中的特定问题;但是,你也应该考虑一般问题。

如果您在构建或使用自己的类时遇到问题,可能是因为您将类的构建与类的使用混淆了。实际上,如果你使用班级"你可以获得更好的结果。在你"建立班级之前#34;。我知道这听起来像废话,但它是测试驱动开发背后的驱动思想,这是编写健壮可用程序的更有效方法之一。

考虑研究JUnit并学习如何设置"测试"目录。我还建议你尽量少学习"足够的" maven自动化这个。不要试图成为JUnit或Maven演奏家。在这个区域开始剪切和粘贴是很好的。

然后你可以先写下你的测试:

public void testBikeCommute() {
  BikeCommute commute = new BikeCommute(...);
  Assert.assertEquals(5, commute.getGallons());
}

现在你可以看到你的设计很奇怪,因为我的大多数通勤都没有Gallons。当你试图"使用"在您编写软件之前,您可能会发现您的软件通勤"实际上是两个理论通勤之间的比较,一个在汽车中,另一个在自行车上。

public void testCommuteSavings() {
  BikeCommute bike = new BikeCommute(...);
  CarCommute car = new CarCommute(...);
  SavingsCalculator calculator = new Calculator(car, bike);
  Assert.assertEquals(5, calcuator.getSavedGallons());
}

这"先使用"技术可以让您更清晰地表达您的问题,并使用像JUnit这样的工具包,甚至可以成为一种自动化的测试策略。此外,它使一些项目很容易测试,如

public void testBikeCommuteUsesZeroGallons() {
  BikeCommute bike = new BikeCommute();
  Assert.assertEquals(0, bike.getGallonsUsed());
}

干杯