這種代碼通常在PHP中工作,但是由於範圍在C#中要嚴格得多,事實並非如此。我無法想出一種不重複自己的方式來編寫這段代碼。C#變量作用域和「switch」語句?
static double Cube()
{
Console.Write("Enter the side length of the cube: ");
try
{
double x = Convert.ToDouble(Console.Read());
return Math.Pow(x, 3);
}
catch (FormatException)
{
Console.WriteLine("Invalid input, please enter a number.");
Cube();
}
return 1;
}
..Later在main():
switch (choice)
{
case 0:
return;
case 1:
double final = Cube();
break;
default:
Console.WriteLine("Please enter 0 or 1.");
Main();
break;
}
Console.WriteLine("The volume is: {0}", Convert.ToString(final));
的Cube()
方法工作得很好,但它在我看來凌亂(return 1
末使編譯器高興)。但出現錯誤提示名稱'final'在當前上下文中不存在。它無法找到最終的。因此,讓我看到的這個工作的唯一方法是在double final = Cube()後面放置Console.WriteLine
語句。
我也試過在開關外面聲明double final;
,然後在每種情況下只設置final
,但那也沒有奏效。
謝謝!
「還沒有工作」(與其他事情嘗試)是錯誤的/誤導。他們會1)工作或2)導致不同的錯誤。 – 2012-03-20 00:26:49
因爲你對Cube的定義很混亂,你必須把'return 1'。它做了太多的事情,並且你在catch中使用遞歸也不是很乾淨。該函數必須返回一個值,所以你任意選擇1作爲失敗返回。如果你不喜歡那樣,移動Math.Pow並決定你在哪裏可以真正得到正確的錯誤行爲。 – CodexArcanum 2012-03-20 00:34:08