自定义非24小时制天数的时长相加C#代码调试求助
问题排查与修正
核心问题分析
你的代码存在两个关键问题,导致无法正常运行或输出错误结果:
- 缺少类容器:C#是面向对象语言,所有方法必须定义在类或结构体内部。你直接编写
static void Main(),编译器会报错,无法生成可执行程序,自然得不到正确结果。 - 八进制字面量的隐患:代码中
07*60 +20里的07是八进制整数(C#中以0开头的整数默认解析为八进制),虽然此处07等价于十进制的7,计算结果暂时正确,但如果后续修改为08这类数值,会直接触发编译错误,建议直接使用十进制写法7。
修正后的代码
using System; class CustomDurationCalculator { static void Main() { // 输入第一个时长 Console.WriteLine("Enter the first duration:"); Console.Write("Days: "); int days1 = int.Parse(Console.ReadLine()); Console.Write("Hours: "); int hours1 = int.Parse(Console.ReadLine()); Console.Write("Minutes: "); int minutes1 = int.Parse(Console.ReadLine()); // 输入第二个时长 Console.WriteLine("\nEnter the second duration:"); Console.Write("Days: "); int days2 = int.Parse(Console.ReadLine()); Console.Write("Hours: "); int hours2 = int.Parse(Console.ReadLine()); Console.Write("Minutes: "); int minutes2 = int.Parse(Console.ReadLine()); // 定义自定义一天的分钟数(1天=7小时20分钟) int customMinutesPerDay = 7 * 60 + 20; // 用十进制7,避免八进制歧义 // 转换为总分钟数 int totalMinutes1 = (days1 * customMinutesPerDay) + (hours1 * 60) + minutes1; int totalMinutes2 = (days2 * customMinutesPerDay) + (hours2 * 60) + minutes2; // 计算总和 int totalMinutesSum = totalMinutes1 + totalMinutes2; // 转换回自定义时长格式 int newDays = totalMinutesSum / customMinutesPerDay; int remainingMinutes = totalMinutesSum % customMinutesPerDay; int newHours = remainingMinutes / 60; int newMinutes = remainingMinutes % 60; Console.WriteLine($"\nTotal Duration: {newDays} days, {newHours} hours, {newMinutes} minutes"); } }
示例验证
用你给出的测试输入:
- 第一个时长:17天1小时40分钟
- 第二个时长:2天3小时40分钟
手动计算过程:
- 自定义一天的分钟数:
7*60+20=440分钟 - 第一个时长总分钟:
17*440 + 60 +40=7580 - 第二个时长总分钟:
2*440 + 180 +40=1100 - 总和:
7580+1100=8680分钟 - 转换为自定义格式:
8680/440=19天,剩余320分钟;320/60=5小时,剩余20分钟 - 最终结果:19天5小时20分钟,修正后的代码会输出该正确结果。
内容的提问来源于stack exchange,提问作者user3453159
相关产品推荐
相关产品推荐

