While Loop regarding user input type stuck on infinite else loop
6 次查看(过去 30 天)
显示 更早的评论
I need to check user input to make sure it's a number. The first part of the while loop works if i input a number, but the 'else' part gets stuck on infinite loop if I input something else, and it won't go out even if I input a number.
%Part of a Program to calculate equivalent resistance for series and parallel circuits
n = input('Enter Number of resistors: ')
for count = 1:n
%input resistance values into an array
R(count) = input(['Enter the value of Resistor ' num2str(count) ': ']);
flag = false;
while ~flag
num = isnumeric(R(count)); %check if resistance input is a number
if num == true %This part works and i can get through the whole for loop if I enter numbers correctly
flag = true;
else %This part gets stuck on an infinite loop even if I enter a number
disp('incorrect entry');
R(count) = input(['Enter the value of Resistor ' num2str(count) ': ']);
end
end
end
2 个评论
Rik
2020-9-21
What input are you trying? I don't get any infite loop on R2020a.
For readability, you should use the smart indent (in most releases you can select your code and hit ctrl+i), and remove empty lines that don't divide distinct parts of your code. You should also pre-allocate R and write some comments in your code that describe the flow of your program.
采纳的回答
Rik
2020-9-21
The data type of R is not changing, so if you create it as a char, it will never be numeric. If you want to use this setup, you need to use a cell array instead. Another method is to use a temporary variable and store that in R once it is valid:
n = input('Enter Number of resistors: ');
R=zeros(1,n);
for count = 1:n
tmp=NaN;%enter loop
while isnan(tmp)
tmp = input(['Enter the value of Resistor ' num2str(count) ': '],'s');
tmp=str2double(tmp);
end
R(count)=tmp;
end
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!