我不是很精通c ++所以当我完成程序时,我首先用Java编写它,以便我能更好地理解并帮助将其转换为c ++ 这是代码:
Odometer.h
class Odometer
{
public:
Odometer();
int traveled(int mils);
void report();
private:
int miles;
};
里程表类:
#include "Odometer.h"
#include <iostream>
using namespace std;
Odometer::Odometer(){ //just added
miles = 0; //initializing
}
int Odometer::traveled(int mils){
miles = miles + mils;
return miles;
}
void Odometer::report(){
int limit = 999999;
if (miles < limit){
cout << miles;
}
else{
miles = 0;
}
}
FuelGauge.h
class FuelGauge{
public:
FuelGauge();
int add(int gallons);
void report();
void decrement(int gallons);
private:
int gallons;
};
FuelGauge类
#include "FuelGauge.h"
#include <iostream>
using namespace std;
FuelGauge::FuelGauge(){ //just added
gallons = 0;
}
int FuelGauge::add(int gals){
gallons = gallons + gals;
return gallons;
}
void FuelGauge::report(){
cout << gallons << endl;
}
void FuelGauge::decrement(int galls){
gallons = gallons - galls;
}
CarInfoMain类
#include "FuelGauge.h"
#include "Odometer.h"
#include <iomanip>
#include <iostream>
using namespace std;
int main(){
FuelGauge g;
Odometer m;
int gallons;
int miles;
cout << "How many gallons do you want to start with in the car? " << endl;
cin >> gallons;
g.add(gallons);
cout << "How far did you travel? " << endl;
cin >> miles;
g.decrement(miles / 24);
cout << "Current Gallons now: " << endl;
g.report(); //<--- this is where it doesn't return it right
/*cout << "Odometer: " << endl;
m.report();*/
}
示例运行:
加仑开始了吗? 14 迈尔斯走了吗? 150现在加仑:1470880840 //通常是这么大的一个, 有时//前面有一个减号,例如-574807128
我不知道为什么它不起作用。感谢
答案 0 :(得分:1)
在c ++中,默认情况下,局部变量具有垃圾值/(在为变量分配之前存储在单元格中)。
所以,当你做里程=英里+密尔 您正在添加一些垃圾值 只需用0初始化里程和加仑即可解决问题。
int miles = 0; int gallons = 0;