为什么我的程序不断循环?

时间:2011-04-17 23:59:40

标签: c++ try-catch

我是一名cis221学生,我被分配了一段我根本想不通的作业......

下面的代码是我的“Fraction”类的重载输入操作符。

istream& operator>>(istream& in, Fraction& fract)
{
     cout << "Enter the whole number part for the fraction ";
     in >> fract.Whole;
     cout << "Enter the Numerator ";
     in >> fract.Numerator;
     cout << "Enter a Denominator ";
     in >> fract.Denominator;
     try
     {
         if (fract.Denominator == 0)
             throw(FractionException(fract, "Deno input was 0, setting to 1"));
     }
     catch(FractionException e)
     {
         fract.Denominator = 1;
         e.DisplayMessage();
     }
    fract.reduceFraction();
    return in;
}

在main中调用。

void main()
{
    //Declarations
    srand((unsigned)time(NULL));
    int i = 0;
    Fraction fract[4];
    for (i=0; i<5; i++)
    {
        cin >> fract[i];
    }
    for (i=0; i<5; i++)
    {
        cout << fract[i];
    }
}

据我所知,这段代码应该完美执行;但是,代码不断循环。即使永远不会抛出异常,也是如此。

我把手表放在循环控制变量“i”上,从字面上看它计数从0到4 ......我不知道出了什么问题......

提前致谢!

1 个答案:

答案 0 :(得分:4)

Fraction fract[4];
for (i=0; i<5; i++)

这不好。使用Fraction fract[5],您将不会覆盖随机内存。