Я закончил большую часть кода для простого калькулятора 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;
}
}
mileage++
фактически увеличит стоимость пробега.
int mileage = 1;
int gallons = mileage++; // mileage will equal 2 after this
В качестве побочного примечания никогда не дожидайтесь конца, чтобы очистить/отформатировать ваш код. Чистый код будет легче читать, следовательно, легче обнаружить проблемы.
Я нашел несколько проблем в коде:
repeat.equalsIgnoreCase("YES")
используйте repeat.equalsIgnoreCase("YES")
.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)
mileage2
в переменную счетчика. Это вернет постоянный результат, основанный на итерации счетчика, а не на среднемmileage1.getMpg()
записей. Подумайте об использованииList<Double>
для хранения результатов всехmileage1.getMpg()
, а затем используйте этот список, чтобы найти среднее значение. ,