1

我正在编写数组教程。我对数组的了解有限。我遇到错误“运算符'+ ='不能应用于'double []'类型的操作数。我不确定为什么这不起作用。原始代码正常工作,直到教程要求使用数组进行更改。任何想法?

没有数组的原始代码:

string inputString;
        double sales=0, totalA = 0, totalB = 0, totalC=0;
        double total = 0;
        string initial;

        Console.Write("Enter family initial: ");
        inputString = Console.ReadLine();
        initial = inputString.ToString();

        while (initial != "z" && initial != "Z")
        {
            Console.Write("Enter a sales amount: ");
            inputString = Console.ReadLine();
            sales = Convert.ToDouble(inputString);
            total += sales;

            if (initial == "A")
            {
                totalA += sales;
            }
            else if (initial == "B")
            {
                totalB += sales;
            }
            else if (initial == "C")
            {
                totalC += sales;
            }


            Console.Write("Enter family initial: ");
            inputString = Console.ReadLine();
            initial = inputString.ToString();

        }
        Console.WriteLine("Family A earned: {0}", totalA.ToString("C"));
        Console.WriteLine("Family B earned: {0}", totalB.ToString("C"));
        Console.WriteLine("Family C earned: {0}", totalC.ToString("C"));
        Console.WriteLine("Grand Total Sales: {0}",total.ToString("c"));

这是我尝试修改代码(每个请求)以将初始值和累计销售总值存储在一个数组中。关于我可以做些什么来实现这一目标的任何想法?

string inputString;
// double sales=0, totalA = 0, totalB = 0, totalC=0;
double sales;
double total = 0;
string initial;

string[] familyNames = {"Anderson","Bowman","Claxton"};
string[] inital = { "A", "B", "C" };
double[] totalA, totalB, totalC;

Console.Write("Enter family initial: ");
inputString = Console.ReadLine();
initial = inputString.ToString();

while (initial != "z" && initial != "Z")
{
    Console.Write("Enter a sales amount: ");
    inputString = Console.ReadLine();
    sales = Convert.ToDouble(inputString);
    total += sales;




    if (initial == "A")
    {
        totalA += sales;
    }
    else if (initial == "B")
    {
        totalB += sales;
    }
    else if (initial == "C")
    {
        totalC += sales;
    }


    Console.Write("Enter family initial: ");
    inputString = Console.ReadLine();
    initial = inputString.ToString();

}
Console.WriteLine("Family A earned: {0}", totalA.ToString("C"));
Console.WriteLine("Family B earned: {0}", totalB.ToString("C"));
Console.WriteLine("Family C earned: {0}", totalC.ToString("C"));
Console.WriteLine("Grand Total Sales: {0}",total.ToString("c"));
4

3 回答 3

1

以下行有问题

totalA += sales;
totalB += sales;
totalC += sales;

因为 totalA/totalB/totalC 被声明为双数组。

分析您的代码后,我觉得您无论如何都不需要双数组。因此,要纠正问题,您需要更改以下内容

double[] totalA, totalB, totalC;

double totalA = 0;
double totalB = 0;
double totalC = 0;
于 2013-10-31T17:51:21.747 回答
1

由于这是您正在学习的教程,因此我认为本练习的重点是消除 3 个total变量并改用数组。

因此,您只需拥有一个 3 元素数组,而不是totalA,totalB和:也许是这样的:totalCtotals

string inputString;
double sales;
double total = 0;
string initial;

string[] familyNames = {"Anderson","Bowman","Claxton"};
string[] inital = { "A", "B", "C" };
double[] totals = new double[3];

Console.Write("Enter family initial: ");
inputString = Console.ReadLine();
initial = inputString.ToString();

while (initial != "z" && initial != "Z")
{
    Console.Write("Enter a sales amount: ");
    inputString = Console.ReadLine();
    sales = Convert.ToDouble(inputString);
    total += sales;

    if (initial == "A")
    {
        totals[0] += sales;
    }
    else if (initial == "B")
    {
        totals[1] += sales;
    }
    else if (initial == "C")
    {
        totals[2] += sales;
    }


    Console.Write("Enter family initial: ");
    inputString = Console.ReadLine();
    initial = inputString.ToString();

}
Console.WriteLine("Family A earned: {0}", totals[0].ToString("C"));
Console.WriteLine("Family B earned: {0}", totals[1].ToString("C"));
Console.WriteLine("Family C earned: {0}", totals[2].ToString("C"));
Console.WriteLine("Grand Total Sales: {0}",total.ToString("c"));

有一些方法可以优化这一点,例如使用循环打印出总数,但我会把它留给你。

于 2013-10-31T18:43:34.930 回答
0

+运算符不适用于数组。例如:

double[] array = new double[2];
array = array + 2; //// this is undefined.

在您的情况下是totalA、totalB、totalC double(值)还是double[](数组)?

于 2013-10-31T17:51:49.587 回答