我有一个if ... elseif ... elseif ...块,我认为我最后只需要一个"结束".但是,除非我为每个"elseif"语句结束,否则我会收到错误.代码如下所示:
if final_grade >= 90; letter_grade='A+'; else if final_grade < 90 & final_grade > 80; letter_grade='A'; else if final_grade < 80 & final_grade >= 76; letter_grade='B+'; else if final_grade < 76 & final_grade >= 73; letter_grade='B'; else if final_grade < 73 & final_grade >= 70; letter_grade='B-'; else if final_grade < 70 & final_grade >= 60; letter_grade='C+'; else if final_grade < 60 & final_grade >= 50; letter_grade='C'; else if final_grade < 50 & final_grade >= 40; letter_grade='D'; else if final_grade < 50 || exam_grade < 50; letter_grade='F'; else if exam_grade < 50 letter_grade = 'F'; end end end end end end end end end end
出于某种原因,这是我的代码工作的唯一方式.如果我只写一个"结束",MATLAB告诉我缺少一个或多个结束.有谁知道如何压缩到一个最终的"结束"?
我相信这就是你想要的:
CENT_GRADES = [ 40, 50, 60, 70, 73, 76, 80, 90]; LETT_GRADES = { 'D', 'C', 'C+', 'B-', 'B', 'B+', 'A', 'A+'}; ix_grade = find(final_grade >= CENT_GRADE, 1, 'last'); if exam_grade < 50 || isempty(ix_grade) letter_grade = 'F'; else letter_grade = LETT_GRADES{ix_grade}; end
请注意,执行情况与您的执行情况不同:有人不能通过exam_grade
小于50 的考试.