2012-11-29 33 views
-11

我這下面的C#代碼:修復代碼在C#

double eps=0.1, low=1, y0=0, x, y, high, muchlat, answer, ribua; 
Console.WriteLine("Enter x"); 
x = double.Parse(Console.ReadLine()); 
high = y = x; 
muchlat = Math.Abs(y - y0) ; 
if (x < 0) 
{ 
    Console.WriteLine("X can't be less than zero, press any key to exit"); 

} 
else if (muchlat > eps) 
{ 

    while (muchlat > eps) 
    { 
     Console.WriteLine(y); 
     y0 = y; 
     y = (high + low) /2; 
     ribua = Math.Pow(y,2); 
     if (ribua == x) 
     { 
      answer = x; 
     } 
     else if (ribua > x) 
     { 
      high =y; 
     } 
     else if (ribua < x) 
     { 
      low =y; 
     } 
     else if (muchlat < eps) 
     { 
      answer = y; 
      break; 
     } 
    } 
} 
Console.WriteLine(answer); 
Console.ReadLine(); 

當我嘗試調試程序時,我得到這個消息 「未分配的局部變量‘答案’的使用(CS0165)」,我問題是我該如何解決它,問題在哪裏?

+5

在使用它之前,爲變量'answer'指定一個值。 – Matthew

+1

請在下一次嘗試搜索錯誤(CS0165)之前提出問題...並使樣本更小...甚至比小...更小的兩行應該已經足以解決此問題。 –

回答

3

只需在聲明時將值的回答定義爲0即可。這應該解決它。

5

答案永遠不會初始化。

double eps=0.1, low=1, y0=0, x=0, y=0, high=0, muchlat=0, answer=0, ribua=0; 
+0

非常感謝!我現在的quastion是爲什麼這是無止境的循環? (while循環)?我怎樣才能解決它,所以當它得到的anser它會停止運行? – tsnave

+1

使用break命令。 –

+0

這可能應該作爲一個新問題提出來......但是你永遠不會更新'muchlat'和'eps'的值,你唯一的'break'命令永遠不會執行,因爲它是'while'語句的反例。另外,我不完全確定這個代碼背後的邏輯是什麼 - 也就是說,你試圖完成什麼。 – MikeTheLiar