所以我一直在研究一個程序,它計算輸入的數字的最接近和更大的 3 次方(如果輸入的數字是 20,那么結果是 27,因為 3^3=27)。但是由于我缺乏技能,我偶然發現了一個問題。似乎使用了變量 result 但從未分配過(即使它的值在 for 循環中分配給它)這是代碼:namespace ConsoleApp6{class Program{ static void Main(string[] args) { Console.Write("Enter a number: "); int num = Convert.ToInt32(Console.ReadLine()); int result; for(int i = num; (i * i * i) >= 0; i--) { result = i * i * i; } Console.WriteLine("Nest 3rd pow. is: " + result); Console.WriteLine("Press any key to contiunue..."); Console.ReadLine(); } }}
2 回答

呼啦一陣風
TA貢獻1802條經驗 獲得超6個贊
評論可能已經解決了您的問題(您在創建它時沒有設置值result
,編譯器可以預見沒有循環運行并且永遠沒有任何賦值的場景,但您總是使用它?!笆褂梦捶峙渚植孔兞俊卞e誤),但我想指出您的程序距離解決廣告中的問題還有一段距離,即找到比輸入數字更大的 int 立方體
為了解決這個問題,將輸入的數字立方根,將其四舍五入到下一個整數并將其立方
Math.Pow(Math.Ceiling(Math.Pow(num, 1.0/3.0)), 3.0);
就目前的情況而言,我不確定您要通過循環實現什么目標,并且看起來它將運行多次將結果設置為 0(它循環直到 i 為零,結果為 0) . 也許您打算從 2 開始 i 并遞增 i 直到結果大于 num,但這似乎比直接執行 calc 效率低

RISEBY
TA貢獻1856條經驗 獲得超5個贊
良好編程實踐的一個總體規則是在聲明中初始化一個變量。
編譯器錯誤表示您在result
未分配時正在使用它。那是因為在您的情況下,for loop
您無法預測它會至少迭代一次(因此在某些情況下,變量在沒有被分配的情況下被使用)。
如前所述,這可以通過初始化變量來解決(0 是標準)
int result = 0;
- 2 回答
- 0 關注
- 282 瀏覽
添加回答
舉報
0/150
提交
取消