while lopps. help plz ´,
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jian Gui
am 23 Jun. 2014
Kommentiert: Jian Gui
am 24 Jun. 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 Kommentar
Joseph Cheng
am 23 Jun. 2014
duplicate post http://www.mathworks.com/matlabcentral/answers/137126-problem-in-while-loop-when-input-is-characters-or-words
anyways. I would suggest put a break point in and see why you do not meet the criteria to breakout of the loop.
Akzeptierte Antwort
Joseph Cheng
am 23 Jun. 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 Kommentare
Joseph Cheng
am 23 Jun. 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) = []
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Parallel Computing 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!