C#编程:如何访问方法内的参数并在Main主程序中调用使用
C#调用CalculateCost方法获取计算结果的解决方法
原有代码核心问题
- C#默认采用值传递参数,CalculateCost方法中修改的形参仅在方法内部生效,无法直接传递到Main方法中使用
- 计算逻辑顺序错误:先执行
roomcarp = area * carpet,后计算area = length * width,会导致roomcarp取值永远为初始值0 - 方法返回值为void,没有向外传递任何计算结果
- 存在定义后未使用的冗余参数grip
修复后的完整代码
using System; namespace MyApplication { public class Program { // 用out修饰参数,将方法内的计算结果向外传递 static void CalculateCost(out int length, out int width, out int area, out int underly, out int grippers, out int fee, out int carpet, out int roomcarp, out int total) { Console.WriteLine("请问您的房间长度是多少?"); length = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请问您的房间宽度是多少?"); width = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请问您选择的地毯每平方米单价是多少?"); carpet = Convert.ToInt32(Console.ReadLine()); // 调整计算顺序:先算面积,再算后续费用 area = length * width; roomcarp = area * carpet; underly = 3 * area; // 防滑条计算 grippers = (width * 2) + (length * 2); fee = 50; total = roomcarp + underly + grippers + fee; } public static void Main(string[] args) { // 先声明接收结果的变量 CalculateCost(out int length, out int width, out int area, out int underly, out int grippers, out int fee, out int carpet, out int roomcarp, out int total); // 输出结果,和示例要求格式匹配 Console.WriteLine($"{length}m×{width}m房间搭配{carpet}英镑地毯总费用为£{roomcarp} + £{underly} + £{grippers} + £{fee} = £{total}"); } } }
运行说明
输入测试值:长度7、宽度6、地毯单价17,即可得到示例输出:7m×6m房间搭配17英镑地毯总费用为£714 + £126 + £26 + £50 = £916
内容的提问来源于stack exchange,提问作者anewcoder111
相关产品推荐
相关产品推荐

