Vector isn't storing the values passed to it?
4 次查看(过去 30 天)
显示 更早的评论
I am going to ask a user to give me positive numbers, and I will quit once the user enters a negative number. Then, I will display all the positive numbers that they had entered. The code reads find to me, but for some reason, the array is not putting in the first positive number that the user passes to it... Any ideas will be greatly appreciated. Thank you.
i=0;
answer='Enter a positive number: ';
x=input(answer);
while x>0
x=input(answer);
i=i+1;
A(i)=x;
end
0 个评论
采纳的回答
Stephen23
2018-5-11
pmt = 'Enter a positive number: ';
num = str2double(input(pmt,'s'));
vec = [];
while num>0
vec = [vec,num];
num = str2double(input(pmt,'s'));
end
And tested:
Enter a positive number: 5
Enter a positive number: 3
Enter a positive number: 1
Enter a positive number: -1
>> vec
vec =
5 3 1
Note that I used the 's' option and wrapped input in str2double, which avoids the unnecessary risk of the user inputting arbitrary code (which would then be executed by input) or unsuitable values.
2 个评论
Stephen23
2018-5-11
编辑:Stephen23
2018-5-11
@Ame Michael: the 's' option is explained in the input help, which I am sure that you have read, so you will know that it makes input return the exact char vector that the user has entered, otherwise the input will be evaluated and the first output returned: experienced MATLAB users consider evaluating any arbitrary input to be insecure and a bad practice. At the very least it can lead to unpredictable errors unless you add a lot of checks on what was returned by input (e.g. array class and size). It is a lot simpler to use the 's' option and str2double, which always returns a scalar numeric (which is NaN if the input was not a valid number).
更多回答(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!