Java MPG计算器
我已经完成了一个简单的MPG计算器的大部分代码。我现在的主要问题是在计划结束时,我需要它来计算用户决定进入的所有英里的平均MPG。Java MPG计算器
我收到一些号码,但它不是正确的一。如果你可以向我提供你的知识,那将会很棒。请让我知道是否还有其他问题,我可以接受任何批评。
import java.util.Scanner;
public class GasMileage {
public static void main(String[] args) {
GasMileage mileage1 = new GasMileage();
GasMileage mileage2 = new GasMileage();
Scanner input = new Scanner(System.in);
System.out.println("Welcome to the MPG calculator!");
double counterM;
double counterG;
double mileage;
double gallons;
double mpg;
double average;
String repeat = "yes";
while (repeat.equals("Yes") ||
repeat.equals("yes") ||
repeat.equals("y") ||
repeat.equals("Y")) {
System.out.println("Enter miles driven: ");
mileage = input.nextDouble();
counterM = mileage++;
mileage1.setMilesDriven(mileage);
mileage2.setMilesDriven(counterM);
System.out.println("Enter gallons used: ");
gallons = input.nextDouble();
counterG = gallons++;
mileage1.setGallonsUsed(gallons);
mileage2.setGallonsUsed(counterG);
mileage1.setMpg(mileage, gallons);
mileage2.setMpg(counterM, counterG);
mpg = mileage1.getMpg();
System.out.println("Your mpg is: " + mpg);
System.out.println("repeat? ");
repeat=input.next();
}
average = mileage2.getMpg();
System.out.println("Your total average mpg is: " + average);
}
double milesDriven;
double gallonsUsed;
double mpg1;
public void setMilesDriven(double Miles) {
milesDriven = milesDriven + Miles;
}
public void setGallonsUsed(double Gallons) {
gallonsUsed = gallonsUsed+Gallons;
}
public double getMilesDriven() {
return milesDriven;
}
public double getGallonsUSed() {
return gallonsUsed;
}
public void setMpg(double setM, double setG) {
mpg1 = (setM)/setG;
}
public double getMpg() {
return mpg1;
}
}
mileage++
实际上会增加里程的数值。
int mileage = 1;
int gallons = mileage++; // mileage will equal 2 after this
作为一个方面的说明永远不要等到最后清理/格式化您的代码。干净的代码将更容易阅读,因此更容易发现问题。
啊,谢谢。我刚刚开始真正了解循环和计数器,但这是有道理的。 此外,我一定会在早些时候重新格式化,当我开始编码时,我刚刚进入了一个小区,保持原样。 :) – momofierce 2014-09-25 16:21:23
太多的开发人员习惯了“清理代码”后,他们得到它的工作。这是一个早期休息的好习惯。 – TedTrippin 2014-09-25 16:24:41
我发现了几个代码的问题:
- 使用
repeat.equalsIgnoreCase("YES")
代替。 - Why mileage ++ &加仑++,这会改变你的输入。
-
setMpg()
未使用已存在于对象中的值。 -
mileage1
不在循环内重置,因此以前的结果将被更新而不是创建新的结果。
如果我没有错,您想要打印每次旅行的里程和总里程。所以更新的代码将是这样的:
import java.util.Scanner;
public class GasMileage {
public static void main(String[] args) {
GasMileage mileage2 = new GasMileage();
Scanner input = new Scanner(System.in);
System.out.println("Welcome to the MPG calculator!");
double mileage;
double gallons;
double mpg;
double average;
String repeat = "yes";
while (repeat.equalsIgnoreCase("YES")) {
GasMileage mileage1 = new GasMileage();
System.out.println("Enter miles driven: ");
mileage = input.nextDouble();
mileage1.setMilesDriven(mileage);
mileage2.setMilesDriven(mileage);
System.out.println("Enter gallons used: ");
gallons = input.nextDouble();
mileage1.setGallonsUsed(gallons);
mileage2.setGallonsUsed(gallons);
mpg = mileage1.getMpg();
System.out.println("Your mpg is: " + mpg);
System.out.println("repeat? ");
repeat = input.next();
}
average = mileage2.getMpg();
System.out.println("Your total average mpg is: " + average);
}
double milesDriven;
double gallonsUsed;
double mpg1;
public void setMilesDriven(double Miles) {
milesDriven = milesDriven + Miles;
}
public void setGallonsUsed(double Gallons) {
gallonsUsed = gallonsUsed + Gallons;
}
public double getMilesDriven() {
return milesDriven;
}
public double getGallonsUSed() {
return gallonsUsed;
}
public double getMpg() {
return milesDriven/gallonsUsed;
}
}
输出:
Welcome to the MPG calculator!
Enter miles driven: 100
Enter gallons used: 25
Your mpg is: 4.0
repeat? yes
Enter miles driven: 200
Enter gallons used: 20
Your mpg is: 10.0
repeat? n
Your total average mpg is: 6.666666666666667 (300/45)
如果你想增加的里程,然后搬回mileage1外循环。因此输出将如下所示:
Welcome to the MPG calculator!
Enter miles driven: 100
Enter gallons used: 25
Your mpg is: 4.0
repeat? yes
Enter miles driven: 200
Enter gallons used: 20
Your mpg is: 6.666666666666667
repeat? n
Your total average mpg is: 6.666666666666667 (300/45)
您正在将'mileage2'的值设置为计数器变量。这将基于计数器的迭代返回一个不变的结果,而不是基于条目的平均值。考虑使用'List'来存储所有'mileage1.getMpg()'调用的结果,然后使用该列表来查找平均。 –
2014-09-25 16:13:11