Java MPG калькулятор

1

Я закончил большую часть кода для простого калькулятора MPG. Моя основная проблема прямо сейчас - это конец программы, в которой я нуждаюсь, чтобы рассчитать средний 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;
    }
}
  • 1
    Вы устанавливаете значения mileage2 в переменную счетчика. Это вернет постоянный результат, основанный на итерации счетчика, а не на среднем mileage1.getMpg() записей. Подумайте об использовании List<Double> для хранения результатов всех mileage1.getMpg() , а затем используйте этот список, чтобы найти среднее значение. ,
Теги:

2 ответа

1
Лучший ответ

mileage++ фактически увеличит стоимость пробега.

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

В качестве побочного примечания никогда не дожидайтесь конца, чтобы очистить/отформатировать ваш код. Чистый код будет легче читать, следовательно, легче обнаружить проблемы.

  • 0
    Ах, спасибо. Я только начинаю по-настоящему понимать циклы и счетчики, но это имеет смысл. Кроме того, я определенно переформатирую ранее, я просто попал в рощу, когда начал кодировать, оставил все как есть. :)
  • 0
    Слишком много разработчиков привыкли к «чистке кода» после того, как они его заработали. Это хорошая привычка рано ломаться.
1

Я нашел несколько проблем в коде:

  • repeat.equalsIgnoreCase("YES") используйте repeat.equalsIgnoreCase("YES").
  • Почему mileage++ и gallons++, это изменит ваш вход.
  • 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)

Если вы хотите увеличить пробег, то переместите пробег1 вне циклы. Таким образом, вывод будет выглядеть так:

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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню