我在学习如何编写和使用自己的课程时遇到了麻烦。例如;
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。有什么想法吗?
答案 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());
}
干杯