解析Console.ReadLine输入后保留整数并正确计算总秒数的方法
计算总秒数时丢失输入数据的问题解决
你的代码问题在于覆盖了读取到的输入变量,导致原本输入的小时、分钟、秒数值被完全丢弃,只计算了天数转换的秒数,完全没用到输入的h、m、s。
错误原因拆解
你在读取完输入后执行了以下赋值操作:
h = d * 24; // 直接覆盖了之前读取的小时数h m = h * 60; // 此处的h已是天数转的小时,同时覆盖了输入的分钟数m s = m * 60; // 此处的m已是天数转的分钟,同时覆盖了输入的秒数s
这相当于只把天数转换成了秒,完全忽略了用户输入的小时、分钟、秒数据。
修正方案
保留所有输入变量,将每个时间单位分别转换为秒后相加,用新变量存储总秒数(或直接计算输出),避免覆盖原始输入值。
修正后的代码
using System; class Program { static void Main() { // 读取所有输入值,保留原始数据 int d = int.Parse(Console.ReadLine()); int h = int.Parse(Console.ReadLine()); int m = int.Parse(Console.ReadLine()); int s = int.Parse(Console.ReadLine()); // 分别转换为秒后求和:天数转秒 + 小时转秒 + 分钟转秒 + 原始秒数 int totalSeconds = d * 24 * 3600 + h * 3600 + m * 60 + s; Console.WriteLine(totalSeconds); } }
代码说明
d * 24 * 3600:将天数转换为秒(1天=24小时,1小时=3600秒)h * 3600:将输入的小时数转换为秒m * 60:将输入的分钟数转换为秒- 最后加上原始输入的秒数
s,得到总秒数
这样就能正确计算所有输入时间单位的总秒数,不会丢失任何输入数据。
内容的提问来源于stack exchange,提问作者giggitygiggity
相关产品推荐
相关产品推荐

