You need to enable JavaScript to run this app. C# Modulus operator计算星期制出狱日期0值问题无新语法解决方案
优惠活动
大模型
产品
解决方案
定价
更多

C# Modulus operator计算星期制出狱日期0值问题无新语法解决方案

解决方案

核心逻辑

问题本质是17的自然计数规则和模运算默认返回06的范围不匹配,仅需要调整数值偏移量适配即可,不需要引入任何新语法。

方案1:无分支偏移计算(更推荐)

直接修改出狱日期的计算行即可:

int dayOfRelease = (dayOfEntry + daysOfSentencing - 1) % 7 + 1;

计算逻辑说明:

  • 先减1:把输入的17的日期转换为06的索引,对齐模运算的输出范围
  • 执行模7计算:得到0~6范围内的出狱日期索引
  • 最后加1:把索引转换回1~7的自然计数,最终结果完全不会出现0值,刚好匹配需求

完整修改后代码:

Console.WriteLine("Enter day of prison entry (from 1-7)");
int dayOfEntry = int.Parse(Console.ReadLine());

Console.WriteLine("How many days of sentencing?");
int daysOfSentencing = int.Parse(Console.ReadLine());

int dayOfRelease = (dayOfEntry + daysOfSentencing - 1) % 7 + 1;

Console.WriteLine("Prisoner is due to be released from prison on the: {0} day", dayOfRelease );

方案2:结果兜底修正

如果希望保留原有模运算逻辑,仅对0值做特殊处理,可以用三元运算符做兜底修正:

int dayOfRelease = (dayOfEntry + daysOfSentencing) % 7;
dayOfRelease = dayOfRelease == 0 ? 7 : dayOfRelease;

逻辑非常直观:当模运算结果为0时直接替换为7,其余情况保留原结果即可。

测试验证

用给出的用例测试:

  • 第3天入狱、服刑4天:两种方案输出结果均为7,符合预期
  • 第2天入狱、服刑3天:输出结果为5,符合预期
  • 第7天入狱、服刑7天:输出结果为7,不会出现0值

内容的提问来源于stack exchange,提问作者BennyElie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 11:36:03