我正在编写一个数组教程。我对阵列的了解有限。 我遇到一个错误“operator'+ ='不能应用于'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"));
答案 0 :(得分:1)
以下行有问题
totalA += sales;
totalB += sales;
totalC += sales;
因为totalA / totalB / totalC被声明为双数组。
分析你的代码之后,我觉得你还不需要双数组。 因此,要纠正此问题,您需要更改以下内容
double[] totalA, totalB, totalC;
到
double totalA = 0;
double totalB = 0;
double totalC = 0;
答案 1 :(得分:1)
由于这是您正在关注的教程,我认为本练习的目的是消除3个total
变量并改为使用数组。
因此,您只需拥有一个3元素数组totalA
,而不是totalB
,totalC
和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"));
有一些方法可以对此进行优化,例如使用循环打印总计,但我会留给您。
答案 2 :(得分:0)
+
运算符不适用于数组。
例如:
double[] array = new double[2];
array = array + 2; //// this is undefined.
在你的情况下,是totalA,totalB,totalC double
(值)还是double[]
(数组)?