我有一个if ... elseif ... elseif ...块,我认为我只需要一个" end"在最后。但是,我得到一个错误,除非我为每个人结束了#34; 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
出于某种原因,这是我的代码工作的唯一方式。如果我只写一个&#34;结束&#34;,MATLAB告诉我缺少一个或多个结束。有没有人知道如何压缩到最后#34;结束&#34;?
答案 0 :(得分:6)
我相信这就是你想要的:
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的考试。
答案 1 :(得分:3)
使用elseif
关键字代替两个关键字else if
。这使得事物处于原始的嵌套级别。