如何创建循环使代码完成计算后回到开头重新运行?
实现C#温度转换代码的循环执行
要让这段温度转换代码循环执行,你可以用C#的循环语句包裹核心逻辑,同时添加退出条件避免无限循环。下面是两种常用的实现方式:
方式一:无限循环+退出触发(while(true))
这种方式会持续运行直到用户主动退出,逻辑清晰,适合大多数场景:
while (true) { Console.WriteLine("Enter Temp in Celsius (or type 'q' to quit)"); string input = Console.ReadLine(); // 输入q/Q时退出程序 if (input.Equals("q", StringComparison.OrdinalIgnoreCase)) { Console.WriteLine("Exiting program..."); break; } // 尝试解析输入为温度数值 if (double.TryParse(input, out double celsius)) { // 绝对零度实际是-273.15℃,修正原代码的数值错误 if (celsius <= -273.15) { Console.WriteLine("Temperature below absolute zero!"); } else { double fahrenheit = (celsius * 1.8) + 32; // 格式化输出保留两位小数,结果更直观 Console.WriteLine($"Your answer is {fahrenheit:F2}F"); } } else { Console.WriteLine("Invalid input. Please enter a number or 'q' to quit."); } }
关键优化点:
- 把原代码的
int改为double,支持小数温度输入,避免精度丢失和输入报错 - 用
double.TryParse替代直接转换,防止用户输入非数字导致程序崩溃 - 添加退出逻辑,避免程序无限运行
- 修正了绝对零度的数值错误(原代码写的-271.15是错误的)
- 用字符串插值替代字符串拼接,代码更简洁易读
方式二:do-while循环(至少执行一次)
如果需要保证代码至少执行一次,再判断是否继续循环,可以用do-while:
string input; do { Console.WriteLine("Enter Temp in Celsius (or type 'q' to quit)"); input = Console.ReadLine(); if (!input.Equals("q", StringComparison.OrdinalIgnoreCase)) { if (double.TryParse(input, out double celsius)) { if (celsius <= -273.15) { Console.WriteLine("Temperature below absolute zero!"); } else { double fahrenheit = (celsius * 1.8) + 32; Console.WriteLine($"Your answer is {fahrenheit:F2}F"); } } else { Console.WriteLine("Invalid input. Please enter a number or 'q' to quit."); } } } while (!input.Equals("q", StringComparison.OrdinalIgnoreCase)); Console.WriteLine("Exiting program...");
内容的提问来源于stack exchange,提问作者Muhammad Hisyamuddin Bin Hamza
相关产品推荐
相关产品推荐

