2

所以,我得到了上述错误(在标题中),但由于某种原因,它只是在第二个循环中抛出了这个错误。请注意,我使用客户变量的第一个和第二个循环工作得非常好,没有抛出任何错误或任何东西。但是在最后一个循环中,即 output[customer][charge] 数组,在 output[customer] 下有一条红线,上面写着“下标值不是数组、指针或向量”。我正在使用 xcode,小牛 OSX。我所有的数组都在其他地方定义,并且到目前为止在整个程序长度内都可以完美运行。程序中还有其他一些操作,但它们与这个循环无关,所以我只是发布了给出错误的代码。我再说一遍,charges[customer][month][charge] 循环工作正常,但 output[customer][output] 不工作。

PS 你可能会认为将所有这些数据保存在数字索引数组中的逻辑是愚蠢的,但它是针对学校项目的。所以不要跟我说这个程序在逻辑上是如何不一致的或其他什么。谢谢!

string headings[3][7];
string chargeLabels[3] = {"Electricity :","Water: ","Gas: "};
string outputLabels[5] = {"Subtotal: ","Discount: ","Subtotal: ","Tax: ","Total: "};
double charges[3][3][3];
double output[3][5];

for(int customer=0; customer<3; customer++)
{
    for(int heading=0; heading<5; heading++)
    {
        cout << headings[customer][heading];
    }

    for(int month=0; month<3; month++)
    {
        cout << chargeLabels[month];

        for(int charge=0; charge<3; charge++)
        {
            cout << charges[customer][month][charge] << ", ";
        }
        cout << endl;
    }
    for(int output=0; output<5; output++)
    {
        cout << outputLabels[output];
        //error is below this comment
        cout << output[customer][output] << endl;
    }
}
4

2 回答 2

4

声明里面for

for(int output=0; output<5; output++)
{

您声明了另一个变量int output,它在语句double output[3][5]之外使用相同的名称隐藏 。for

于 2013-11-02T16:10:34.483 回答
2

这是你的问题:

double output[3][5];
for(int output=0; output<5; output++)

您将output作为变量名重复使用两次。

因此,当您尝试在此处访问它时:

cout << output[customer][output] << endl;

您正在访问 local output,这只是一个 int。

于 2013-11-02T16:11:51.817 回答