Effacer les filtres
Effacer les filtres

while lopps. help plz ´,

2 vues (au cours des 30 derniers jours)
Jian Gui
Jian Gui le 23 Juin 2014
Commenté : Jian Gui le 24 Juin 2014
Hi all. I am trying to make a while loops that will keep on running if the user input is a str, a number less and equal 0 or the number is longer the length of my vector. But it doesn't work, plz help:)
deleterowStr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowStr);
while ~((~isempty( deleterow) && deleterow <=0 || deleterow > length(W)) || strcmpi(deleterowStr,'')==1)
disp('Invaild row number')
deleterowstr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowstr);
end
thx:)
  1 commentaire
Joseph Cheng
Joseph Cheng le 23 Juin 2014
anyways. I would suggest put a break point in and see why you do not meet the criteria to breakout of the loop.

Connectez-vous pour commenter.

Réponse acceptée

Joseph Cheng
Joseph Cheng le 23 Juin 2014
okay so doing a quick testing with different inputs the issue is when you put in an input like 'a'. where the logic checks would become empty. So what i did is broke it out and when the deleterow number is empty put one of the other conditionals so it would loop again. It would break out of the loop iff none of the loop conditions are met.
W=[1 2 3 4 5]
deleterowStr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowStr);
while 1
inputEmpty = isempty(deleterow);
if inputEmpty==1
deleterow = -1;
end
inputNeg = deleterow<=0;
input2Long = deleterow>length(W);
inputBlank = strcmpi(deleterowStr,'')==1;
if sum([inputEmpty inputNeg input2Long inputBlank])==0
break
end
disp('Invaild row number')
deleterowstr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowstr);
end
W(deleterow) = []
  2 commentaires
Joseph Cheng
Joseph Cheng le 23 Juin 2014
condensed version
W=[1 2 3 4 5]
deleterowStr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowStr);
if isempty(deleterow)
deleterow = -1;
end
while (deleterow<=0 || deleterow > length(W)) || strcmpi(deleterowStr,'')==1
disp('Invaild row number')
deleterowstr=input('Please enter the number of the row:','s');
deleterow=str2num(deleterowstr);
if isempty(deleterow)
deleterow = -1;
end
end
W(deleterow) = []
Jian Gui
Jian Gui le 24 Juin 2014
works perfectly thx:)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Tags

Aucun tag saisi pour le moment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by