Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';不能添加到数组中_C#_Arrays - Fatal编程技术网

C# Can';不能添加到数组中

C# Can';不能添加到数组中,c#,arrays,C#,Arrays,我正在编写数组教程。我对阵列的了解有限。 我遇到了一个错误“运算符'+='无法应用于'double[]类型的操作数。我不知道为什么这不起作用。在教程要求更改使用数组之前,原始代码工作正常。有什么想法吗 不带数组的原始代码: string inputString; double sales=0, totalA = 0, totalB = 0, totalC=0; double total = 0; string initial; C

我正在编写数组教程。我对阵列的了解有限。 我遇到了一个错误“运算符'+='无法应用于'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"));

下面的线路有问题

totalA += sales;
totalB += sales;
totalC += sales;
因为totalA/totalB/totalC被声明为双数组

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

double[] totalA, totalB, totalC;


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

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

在您的例子中是totalA、totalB、totalC
double
(值)或
double[]
(数组)?

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

因此,您不需要使用
totalA
totalB
totalC
,而只需要使用一个3元素数组:
totals
。可能类似这样:

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"));

有一些方法可以优化它,例如使用一个循环来打印总计,但我将把它留给您。

您没有使用总计数组。请尝试将其更改为
double totalA,totalB,totalC;
您可能不需要数组来计算总计,而只需取消对上面行的注释即可,以获得变量声明it’好像你甚至不需要数组,“合计”值都可以是两倍。要么是这样,要么我真的不明白你想用它们做什么。你希望
totalA+=sales;
做什么?当输入销售金额时,我需要将其添加到totalC、B或a中(取决于用户输入的字母)。
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"));