How to use an if statement with isempty(strfind()) as a condition?
    3 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
    Imad Alkassab
 le 12 Fév 2016
  
    
    
    
    
    Commenté : Imad Alkassab
 le 15 Fév 2016
            So I have this code where I need to calculate taxes over a salary entered by the subject. This subject may enter any Province marked by abbreviations such as 'ON', 'AB' and 'PE' and they are put in a cell array called B. I do not understand why even if i do not enter the said Province, MATLAB does execute this if statement and thus calculate taxes for every Province. Do you guys have a solution so the said code does not execute?
Note : This is only part of a code, the rest of it is pretty much a copy of this code only with the 'ON' changed for another Province string. There is also no error shown, the program only executes all of it and displays it.
EDIT : I did join my .m file, according to Star Strider's comment
                W = isempty(strfind(B,'ON'));
                if W 
                    if Salary <= 36848
                       ON = 0.0605*Salary;
                    elseif 36848.01 <= Salary & Salary <= 73698
                       ON = 0.0915*Salary;
                    elseif Salaire > 73698
                       ON = 0.1116*Salary;
                    end
                    fprintf('%.2f en Ontario\n',ON)
                end
Thank you all,
tl dr : MATLAB executes the program even if the cell does not contain what it has to find to execute.
0 commentaires
Réponse acceptée
  Star Strider
      
      
 le 12 Fév 2016
        
      Modifié(e) : Star Strider
      
      
 le 12 Fév 2016
  
      If you don’t enter a province, the isempty condition will be true. Using the logical negation (~) in the ‘W’ assignment would seem to be the correct logic:
B = {'ON', 'AB' 'PE'};
W = ~isempty(strfind(B,'ON'));
if W
    fprintf(1, '\nCalculate Ontario taxes\n')
end
5 commentaires
  Walter Roberson
      
      
 le 13 Fév 2016
				if strcmpi(B,'ON')
  ... do whatever for Ontario
end
Or
switch upper(B)
  case 'ON':
     ... ontario
  case 'MB':
     ... manitoba
end
Plus de réponses (0)
Voir également
Catégories
				En savoir plus sur Characters and Strings dans Help Center et File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


