if / elseif命令无法正常工作

时间:2014-08-03 09:57:59

标签: matlab

亲爱的StackOverflow社区,

由于我已经经历过你一次又一次帮助的意愿,我再次来到这里寻求帮助。

截至目前,我有一个包含"客户"的模拟器。我想通过分配各种客户类型(作为属性)对它们进行分类。在某一点上,这个任务工作得非常好但不知何故,我的代码中仍然存在一个错误。但请亲自看看:

主要功能

ncust = 500 %//(number of customers)

%function call

for ii = 1:ncust;
    customers{ii} = Customer(ii);
    customers{ii}.setcustTypeDistrib(ncust);
end

每个客户都有一个名为" id" (客户1有id 1 - >谁会猜到?)

班级客户

function obj = setcustTypeDistrib(obj, ncust) %sets types of customers
    if obj.id < ceil(ncust/2) % 50 percent of the customers are type 1
        obj.custType = 1;

    elseif ceil(ncust/2) < obj.id || obj.id < ceil(0.75*ncust)
        obj.custType = 2;

    elseif ceil(0.76*ncust) < obj.id 
        obj.custType = 3;
    end
end

但是,如果我检查,例如,客户450(在MATLAB中:customers{450})他是客​​户类型2,尽管他应该是客户类型3.我做错了什么?我觉得完全失去了!


编辑例如

拥有房产的客户:

id: 490
custType: 2
minInterval: 4.7846e+04

1 个答案:

答案 0 :(得分:1)

问题是你在ceil(ncust/2) < obj.id || obj.id < ceil(0.75*ncust)中使用'或'语句,因为ceil(ncust/2) < obj.id对象id超过一半的所有内容都是第二类。使用'和'语句,您将获得所需的结果。

e.g。

ceil(ncust/2) < obj.id && obj.id < ceil(0.75*ncust)