所以我一直在研究一个程序,它计算输入的数字的最接近和更大的 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,编译器可以预见没有循环运行并且永远没有任何赋值的场景,但您总是使用它。“使用未分配局部变量”错误),但我想指出您的程序距离解决广告中的问题还有一段距离,即找到比输入数字更大的 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 关注
- 362 浏览
添加回答
举报
0/150
提交
取消
