Error when looping over an object array
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Astrik
am 29 Aug. 2016
Bearbeitet: per isakson
am 29 Aug. 2016
I have created two classes: a market and a good. I can add goods to market by buying them or I can remove them from my market by selling them. I have written a method buy
1. Every time I buy a good, it checks whether there is such a product in my market, and if yes, it adds the quantity to the existing quantity.
2. If the product does not exist, it adds it as a new object to my good array.
function buy(obj, item)
exists=0;
for i=1:length(obj.goods)
if obj.goods(i).name==item.name
obj.goods(i).quantity=obj.goods(i).quantity+item.quantity;
exists=1;
end
end
if exists==0
obj.goods(end+1)=item;
end
end
First time I call the method it adds the object to the array. Now I have only one object in the array.
Second time I get the following error
>> mymarket.buy(cheese)
Error using ==
Matrix dimensions must agree.
Error in market/buy (line 17)
if obj.goods(i).name==item.name
Any help will be appreciated.
0 Kommentare
Akzeptierte Antwort
per isakson
am 29 Aug. 2016
Bearbeitet: per isakson
am 29 Aug. 2016
Your code cannot compare names of different lengths
>> 'aaa' == 'bbbb';
Error using ==
Matrix dimensions must agree.
>>
Replace
obj.goods(i).name==item.name
by
strcmp( obj.goods(i).name, item.name )
0 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Multidimensional Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!