static double calculateTotals(double a)
{
double transfee = a * .01;
double total = a + transfee;
return total;
}
static void Main(string[] args)
{
Console.WriteLine("How many dontations to process?");
int donations = Convert.ToInt16(Console.ReadLine());
int[] count = new int[] { donations + 1 };
int ct = 1;
int i = -1;
do
{
Console.WriteLine("Enter name: ");
string name = Console.ReadLine();
Console.WriteLine("Enter donation amount: ");
double amount = Convert.ToDouble(Console.ReadLine());
double transfee = amount * .01;
i++;
ct = count[i += 1];
Console.WriteLine(name + "\t" + amount + "\t" + transfee);
} while (i < donations);
Console.WriteLine("TOTALS:" + "\t" + calculateTotals(amount) + "\t" + transfee);
Console.ReadLine();
}
}
你好我是编码的初学者,因此如果尝试不当,我深表歉意。
我正在尝试制作一个记录个人捐赠金额,计算交易费用并输出每个人结果的应用程序。最后,我将创建最后一行输出,其中将说明捐赠总额和交易费用总额。
我目前不确定如何在我的循环中正确实现数组,也不确定循环是否在总体上得到了优化。
我还是新手。我为此类代码表示歉意,但我希望对这些内容进行一些说明。
谢谢!
答案 0 :(得分:0)
首先,您的数组声明语法错误。参见this link。
因此应为int[] count = new int[donations+1];
第二,您需要在循环外声明并实例化数量和流量变量。
double transfee = 0.0F;
double amount = 0.0F;
do
{
...
amount = Convert.ToDouble(Console.ReadLine());
transfee = amount * .01;
...
} while (i < donations);
这应该是足够的信息,可以让您再次尝试。既然您正在学习,我认为没有人会真正为您提供一个答案,以解决您要找出的工作:)
答案 1 :(得分:0)
您的代码:
int i = -1;
do
{
...
i++;
ct = count[i += 1];
...
} while (i < donations);
您实际上将我增加了两倍,然后从count [i]中获取分配给 ct 变量的值
请参阅此示例:
int[] count = new int[3];
count[0] = 0;
count[1] = 1;
count[2] = 2;
int i = -1;
do
{
i++;
int x = count[i += 1];
Console.WriteLine(x);
} while (i < 3);
这将导致 IndexOutOfRangeException
说明:
第一个循环:
i++; // i increased 1, so i = 0
int x = count[i += 1]; // i increased 1, so i = 1, then get count[1] assign to x, x is 1
第二个循环:
i++; // i increased 1, so i = 2
int x = count[i += 1]; // i increased 1, so i = 3, then get count[3] assign to x
计数[3] 导致 IndexOutOfRangeException
count [i + = 1]之类的东西会使您的代码更难以维护,我认为,如果可能的话,应避免使用该代码,并尝试尽可能明确地编写它