对于C#而言,我显然是新手,而以下的程序来自Charles Petzold的书,我并不完全理解。 GetDouble
方法中的参数是名为prompt的字符串。没有任何地方宣布这一点,我认为这是让我搞砸的事情。我看到Main方法正在调用GetDouble
并且正在向控制台打印三个字符串,但这一切对我来说都很奇怪。这是典型的编程设计,还是这不是行业标准,而是为了展示如何做到这一点?这本书没有给出答案。我刚刚开始编程的自我不会将字符串传递给Main方法。有人可以帮我理顺吗?
using System;
class InputDoubles
{
static void Main()
{
double dbase = GetDouble("Enter the base: ");
double exp = GetDouble("enter the exponent: ");
Console.WriteLine("{0} to the power of {1} is {2}", dbase, exp, Math.Pow(dbase, exp));
}
static double GetDouble(string prompt)
{
double value = Double.NaN;
do
{
Console.Write(prompt);
try
{
value = Double.Parse(Console.ReadLine());
}
catch
{
Console.WriteLine();
Console.WriteLine("you enter an invalid number!");
Console.WriteLine("please try again");
Console.WriteLine();
}
}
while (Double.IsNaN(value));
return value;
}
}
答案 0 :(得分:3)
这无处声明,我认为这让我感到困惑。
等待,它在那里声明 - 在方法的标题中:
static double GetDouble(string prompt)
// ^^^^^^^^^^^^^ This is the declaration of prompt
prompt
与您看到的其他变量不同,它不是正常变量:它是方法的形式参数。
与初始化并使用赋值运算符=
分配显式的常规变量不同,通过调用方法,形式参数隐式。当您调用该方法时,您将使用实际参数传递一个表达式,该表达式用作该表达式到形式参数的赋值。想象一下,prompt
变量在第一次调用之前被分配"Enter the base: "
,然后在第二次调用之前被分配"enter the exponent: "
以了解当您调用GetDouble
时发生了什么。
答案 1 :(得分:1)
GetDouble(string)
方法就是这样 - 它从输入中得到一个双倍
提示给用户的文本是一个参数,因为要输入两个不同的值:首先是基数,第二是指数。
通过使提示成为参数,GetDouble(string)
方法可以处理从提示用户输入到返回值的所有内容。
另一种方法是在GetDouble(string)
之外提示用户。这两种选择中的哪一种更适合是品味。
哦,就像你现在想的那样,这与方法中的异常处理无关。
答案 2 :(得分:0)
你可以这样改变它。它也是如此,但我认为更容易理解:
static void Main()
{
string messageForDbaseParam="Enter the base: ";
double dbase = GetDouble(messageForDbaseParam);
string messageForExpParam ="enter the exponent: ";
double exp = GetDouble(messageForExpParam);
Console.WriteLine("{0} to the power of {1} is {2}", dbase, exp, Math.Pow(dbase, exp));
}
static double GetDouble(string prompt)
{
double value = Double.NaN;
Boolean incorrectValue=true;
while(incorrectValue)
{
Console.Write(prompt);
try
{
value = Double.Parse(Console.ReadLine());
incorrectValue=false;
}
catch
{
Console.WriteLine("error");
}
}
return value;
}