gpt4 book ai didi

java - 如何使用 OOP、构造函数和对象将变量传递给方法和主方法

转载 作者:太空宇宙 更新时间:2023-11-04 09:53:01 26 4
gpt4 key购买 nike

我有一个程序,可以在其中计算并打印汽油里程信息。我正在处理的作业希望我(好吧,我认为它希望我)使用 OOP、构造函数和对象将变量从构造函数传递到我的整个程序。这对我来说完全没有意义。

以下是具体的分配说明: https://drive.google.com/file/d/1D1FZKHrU4duu1UyWusPvsjVum33B8kdt/view?usp=sharing

我尝试在主方法中将原始变量设为私有(private)静态变量,并将它们放置在类头的正下方。这有效,但我认为指令希望我的构造函数以某种方式包含变量。这对我来说根本没有任何意义。我没有得到任何构造函数或对象以及如何在这个应用程序中使用它们,这让我非常沮丧。

CarV3,指令根据我应该面向对象的方式引用的程序,看起来像这样:

public class CarV3 {
public static int calcDistance(int sMiles1, int eMiles1){
return eMiles1 - sMiles1;
}

public static double calcMPG(int dist1, double gals1){
return dist1 / gals1;
}

public static void main(String[]Args) {
int sMiles1 = 43305;
int eMiles1 = 43422;
int dist1;
double gals1 = 7.8;
double MPG1;
String carType1 = "14 Acura MDX";

CarV3 car1 = new CarV3();

dist1 = car1.calcDistance(sMiles1, eMiles1);
MPG1 = car1.calcMPG(dist1, gals1);

System.out.printf("%52s%n%s%16s%14s%13s%12s%14s%n%s%n", "Gas Mileage Calculations", "Type of Car", "Start Miles", "End Miles", "Distance", "Gallons", "Miles/Gal",
"================================================================================");
System.out.printf("%s%15d%14d%13d%12.1f%14.1f", carType1, sMiles1,
eMiles1, dist1, gals1, MPG1);
}
}

该代码以前有效。指令要求稍后计算 GPM 和其他数据,所以我的程序在 CarV5 中变得更像这样:

public class CarV5 {
private static int sMiles1 = 43266;
private static int eMiles1 = 43422;
private static int dist1;
private static double gals1 = 7.8;
private static double MPG1;
private static double pricePerGallon1 = 2.98;
private static double GPM1;
private static double totalCost1;
private static String carType1 = "14 Acura MDX";

CarV5() {
}

public int calcDistance(int sMiles1, int eMiles1){
return eMiles1 - sMiles1;
}

public static double calcMPG(int dist1, double gals1){
return dist1 / gals1;
}

public static double calcGPM(int dist1, double gals1) {
return gals1 / dist1;
}

public static double totalCost(double pricePerGallon1, double gals) {
return pricePerGallon1 * gals;
}

public static void main(String[]Args) {
CarV5 car1 = new CarV5();

dist1 = car1.calcDistance(sMiles1, eMiles1);
MPG1 = car1.calcMPG(dist1, gals1);
GPM1 = car1.calcGPM(dist1, gals1);
totalCost1 = car1.totalCost(pricePerGallon1, gals1);

System.out.printf("%70s%n%s%16s%14s%13s%12s%10s%9s%14s%13s%n%s%n", "Gas Mileage Calculations", "Type of Car", "Start Miles", "End Miles", "Distance", "Gallons", "Price", "Cost", "Miles/Gal", "Gal/Mile", "================================================================================================================");
System.out.printf("%s%15d%14d%13d%12.1f%10.2f%9.2f%14.1f%13.3f", carType1, sMiles1, eMiles1, dist1, gals1, pricePerGallon1, totalCost1, MPG1, GPM1);
}
}

虽然这段代码有效,但我几乎肯定这不是说明要求我做的事情。老实说,我不明白说明要我做什么。您看到的程序确实打印了预期的结果,即所有汽车数据。但是,在说明中,我被告知要使用某种带有值的构造函数。如果您注意到在第二个版本中我有这个“CarV5() {}”,我不明白它的作用。

正如前面提到的,在我的程序的第二个版本 CarV5 中,预期输出是正确的。表格打印出距离、加仑等的计算值。

我的方法有问题。我对这篇超长的帖子感到抱歉,但是我也在参加这门类(class)的 friend 们认为我已经超出了被教导的范围,如果我说实话,也许我也是。我只是想知道如何做到这一点。

最佳答案

好吧,我不确定赋值是什么,因为它无法访问,但我认为他们希望您创建一个带有字段的类,这些字段将在对象创建期间在构造函数中设置。让我举一个简单的例子:

package tst;

public class CarTest {

public static void main(String[] args) {
// creating new instance of the Car and at once setting all its fields in constructor
// now as I see the assignment, this line corresponds to
// CarV5 car1 = new CarV5(carType1, endMiles1, startMiles1, gallonsUsed1, pricePerGallon1);
Car car = new Car(43266, 43422, 7.8);

//calculating and printing the result w/o providing values but using instance fields
System.out.println(car.calcDistance());

}




// the Car class itself, you can put it in different file
public static class Car {

// note that fields are NOT static, i.e. they belong to an INSTANCE of the class, not the class itself
private int sMiles1;
private int eMiles1;
private double gals1;

//
public Car(int sMiles1, int eMiles1, double gals1) {
this.sMiles1 = sMiles1;
this.eMiles1 = eMiles1;
this.gals1 = gals1;
}

// example of your methods
public int calcDistance(){
return this.eMiles1 - this.sMiles1;
}

// other methods you need

}

}

请告诉我这是否有帮助:)PS:我认为让您感到困惑的是静态实例方法,请尝试刷新类(class)的这一部分或使用其他来源(=google:))

关于java - 如何使用 OOP、构造函数和对象将变量传递给方法和主方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54465947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com