Java MPG计算器

Java MPG计算器,java,Java,我已经完成了一个简单计算器的大部分代码。我现在的主要问题是在程序结束时,我需要它来计算用户决定输入的所有英里数的平均MPG 我有一些号码,但不是正确的。如果你能向我求知,那就太棒了。如果还有其他问题,请告诉我,我可以接受任何批评 import java.util.Scanner; public class GasMileage { public static void main(String[] args) { GasMileage mileage1 = new Ga

我已经完成了一个简单计算器的大部分代码。我现在的主要问题是在程序结束时,我需要它来计算用户决定输入的所有英里数的平均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;
    }
}

里程+++
实际上会增加里程值

int mileage = 1;
int gallons = mileage++; // mileage will equal 2 after this

作为旁注,不要等到最后才清理/格式化代码。干净的代码更容易阅读,因此更容易发现问题。

我发现代码中几乎没有问题:

  • 改用
    repeat.equalsIgnoreCase(“是”)
  • 为什么里程++&加仑++,这将改变您的输入
  • 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: 6.666666666666667
repeat? n

Your total average mpg is: 6.666666666666667 (300 / 45)
输出:

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)
如果您想要增加里程数,则将里程数1移回环路外。因此,输出将如下所示:

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: 6.666666666666667
repeat? n

Your total average mpg is: 6.666666666666667 (300 / 45)

您正在将
里程2
的值设置为计数器变量。这将基于计数器的迭代返回一个常量结果,而不是基于条目的平均值。。考虑使用<代码>列表来存储所有的代码> MyEre1.GETMPG](< /代码>调用)的结果,然后使用该列表查找平均值。Ahh,谢谢。我刚刚开始真正理解循环和计数器,但这是有意义的。另外,我肯定会在早些时候重新格式化,我刚开始编码时就进入了一个小圈子,保持原样。:)太多的开发人员习惯于在代码运行后“清理代码”。早点改掉是个好习惯。