当前位置:  开发笔记 > 编程语言 > 正文

MATLAB:如何清理这个"if"块?

如何解决《MATLAB:如何清理这个"if"块?》经验,为你挑选了1个好方法。

我有一个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告诉我缺少一个或多个结束.有谁知道如何压缩到一个最终的"结束"?



1> 小智..:

我相信这就是你想要的:

    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 的考试.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有