MATLAB构造函数SetTimeConstruct自测正常 但Grader报变量y值错误
问题排查
你的代码存在2处可导致Grader判题失败的问题:
- 参数不足分支的变量名拼写错误:else分支中
TImeHrMin.minutesVal的变量名第二个字符误写为大写I,正确应为TimeHrMin.minutesVal。当Grader测试传入1个/0个参数的边界用例时,代码会直接抛出「未定义函数或变量'TImeHrMin'」的错误,导致判题失败。 - 赋值语句缺分号导致多余输出:
TimeHrMin.hoursVal = hoursVal、TimeHrMin.minutesVal = minutesVal两行末尾没有加分号,运行时会在命令行打印字段值,部分严格的判题规则会将多余输出判定为异常。
修正后代码
function TimeHrMin = SetTimeConstruct(hoursVal, minutesVal) if nargin == 2 % 校验小时范围 if (hoursVal > 24 || hoursVal < 0) TimeHrMin.hoursVal = 0; else TimeHrMin.hoursVal = hoursVal; end % 校验分钟范围 if (minutesVal > 60 || minutesVal < 0) TimeHrMin.minutesVal = 0; else TimeHrMin.minutesVal = minutesVal; end else disp("Error with wrong number of arguments passing to the function"); TimeHrMin.hoursVal = 0; TimeHrMin.minutesVal = 0; end end
内容的提问来源于stack exchange,提问作者William Wang
相关产品推荐
相关产品推荐

