Данные объекта Java, ErroMax и Min of Array?

Мне нужна помощь с max и min. Этот раздел кода относится к основному методу моего годового класса использования топлива. Программа прогнозирует мой годовой расход топлива, основанный, по крайней мере, на трех пополнениях моего автомобиля.

Я вычисляю max и min для расстояния (это пробег миль), MPG и цена за галлон. Из моих операторов печати (не входит в комплект) я вижу, что он правильно вычисляет max, но это не min, потому что он печатает нули, которые я инициализировал переменными вместо истинных минимальных значений.

некоторый код

//initialization of array of objects
 AnnualFuelUse[] fillUps = {new AnnualFuelUse (1, 1, 6500, 6800, 9.70, 3.11),
 new AnnualFuelUse (2, 10, 6800, 7052, 8.10, 3.08),
 new AnnualFuelUse (3, 20, 7052, 7349, 9.20, 3.15)};

еще один код

//calculate Min and Max for distance, MPG, and price per gallon
 ****** minDist = 0, maxDist = 0;
 ****** minMPG = 0.0, maxMPG = 0.0, minPrice = 0.0, maxPrice = 0.0;

 ****** dMin = ******.MAX_VALUE;
 ****** dMax = ******.MIN_VALUE;
 ****** mpgMin = ******.MAX_VALUE;
 ****** mpgMax = ******.MIN_VALUE;
 ****** priceMin = ******.MAX_VALUE;
 ****** priceMax = ******.MIN_VALUE;

 for (int i = 0; i < fillUps.length; i++) {
 if (fillUps[i].getDist() > dMin){
 dMin = fillUps[i].getDist();
 minDist = dMin;
 } 
 if (fillUps[i].getDist() > dMax) {
 dMax = fillUps[i].getDist();
 maxDist = dMax;
 }
 if (fillUps[i].getMilesPerGallon() > mpgMin) {
 mpgMin = fillUps[i].getMilesPerGallon();
 minMPG = mpgMin;
 } 
 if (fillUps[i].getMilesPerGallon() > mpgMax) {
 mpgMax = fillUps[i].getMilesPerGallon();
 maxMPG = mpgMax;
 } 
 if (fillUps[i].getPrice() > priceMin) {
 priceMin = fillUps[i].getPrice();
 minPrice = priceMin;
 } 
 if (fillUps[i].getPrice() > priceMax) {
 priceMax = fillUps[i].getPrice();
 maxPrice = priceMax;
 }
 }

Он дает мне следующие данные для Distance, MPG и pricePerGallon

Минимум: 0, 0,0, 0,00 Максимум: 300, 2,3, 3,15

Любая помощь высоко ценится!! :)

1 ответ

Сравните эти условия if:

if (fillUps[i].getDist() > dMin){
 dMin = fillUps[i].getDist();
 minDist = dMin;
 } 
 if (fillUps[i].getDist() > dMax) {
 dMax = fillUps[i].getDist();
 maxDist = dMax;
 }

То, что вы хотели сделать в первом if (fillUps[i].getDist() < dMin) - if (fillUps[i].getDist() < dMin)

Существует большая разница между > и < :)

Вы всегда сравниваете "значение больше, чем ", а не "значение меньше, чем "

licensed under cc by-sa 3.0 with attribution.