我正在制作一个图书馆程序,要求用户输入已检出的图书数量及其超过的天数。如果它低于或等于7天,则每本书在7天后收取10美分,每本书20美分。我们应该使用多种方法,但我得到两个错误:
使用未分配的本地变量' totalCharge'
没有任何论据符合所需的形式参数' daysOverdue' Program.charge(double,double,double)'
我想我知道第一个错误意味着什么,但我想我已经在第一行宣布它是一个变量。
到目前为止,这是代码:
static void Main(string[] args){
double totalCharge;
Console.WriteLine("Please enter the number of books checked out.");
double booksChecked = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter the number of days they are
overdue.");
double daysOverdue = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Your total charge for {0} days overdue is {1}.",
daysOverdue, totalCharge.ToString("C"));
Console.ReadKey();
totalCharge = charge();
}
private static double charge (double daysOverdue, double booksChecked,
double totalCharge)
{
if (daysOverdue <= 7)
{
return totalCharge = booksChecked * daysOverdue * .10;
}
else
{
return (booksChecked * .70) + (booksChecked) * (daysOverdue - 7)
* (.20);
}
}
}
}
答案 0 :(得分:1)
您的代码存在许多问题,我将在此处进行审核。我的更正是在这个答案的最后。我建议将你的代码和我的代码放在一起并仔细检查差异。
首先,在分配值之前,无法从变量中读取值。您必须先将某些内容分配给它。
在打印出charge(...)
的值之前,您需要致电totalCharge
。
其次,您无需将totalCharge
的值传递给charge(...)
方法:返回总费用!所以完全删除该参数。
第三,您需要将参数传递给charge
方法。
第四,你有一些格式问题。请查看我的代码,看看我是如何以不同方式格式化代码的。如果一行代码继续到下一行,请使用缩进来反映这一点。根据C#约定,函数名称应大写。
最后,这不一定是个问题,但看起来并不正确:在两个地方,您要将Convert.ToInt32(...)
分配给double
。为什么?那些应该是整数。
static void Main(string[] args)
{
Console.WriteLine("Please enter the number of books checked out.");
double booksChecked = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Please enter the number of days they are overdue.");
double daysOverdue = Convert.ToInt32(Console.ReadLine());
// assign before printing out value
// pass the two parameters into the function
double totalCharge = Charge(daysOverdue, booksChecked);
Console.WriteLine("Your total charge for {0} days overdue is {1:C}.",
daysOverdue,
totalCharge);
Console.ReadKey();
}
private static double Charge(double daysOverdue, double booksChecked)
{
if (daysOverdue <= 7)
{
return booksChecked * daysOverdue * .10;
}
else
{
return (booksChecked * .70) + booksChecked * (daysOverdue - 7) * (.20);
}
}