Arrays Matlab-用户输入到数组中

Arrays Matlab-用户输入到数组中,arrays,matlab,Arrays,Matlab,我需要编写一个程序,返回用户输入的最大数字。用户可以输入任意多个>=0的数字,当他们输入-1时,程序将停止并返回最大的数字。我真的很难做到这一点。到目前为止,我有: validInput = false; while (~validInput) fprintf('Enter a number >= 0 or a negative to quit.\n'); num = input('Enter a number or -1 to quit: '); if(num == -1)

我需要编写一个程序,返回用户输入的最大数字。用户可以输入任意多个>=0的数字,当他们输入-1时,程序将停止并返回最大的数字。我真的很难做到这一点。到目前为止,我有:

validInput = false;
while (~validInput)
  fprintf('Enter a number >= 0 or a negative to quit.\n');
  num = input('Enter a number or -1 to quit: ');
  if(num == -1)
    validinput = true;
    counter = 0;
  elseif(num>=0)
    counter = counter+1;
  end;
  if(counter == 0)
    fprintf('No values entered!');
  else
    array = (counter);
     m = max(counter);
     disp(m);
  end
end``

你不需要将它限制为正数,但要回答你的问题,你可以这样做。并删除<0中的
| |,以允许用户选择负数

num = [];

while (true)
    in = input('Enter a number or a non-numeric character to quit: ');

    if isempty(in) || ~isnumeric(in) || in < 0
        break
    end

    num(end+1) = in;
end

[M, INDEX] = max(num);

if ~isempty(num)
    disp(['The ', num2str(INDEX),' was the maximum entered value and was: ', num2str(M), '.'])
else
    disp('No value entered.')
end
num=[];
while(true)
in=input('输入要退出的数字或非数字字符:');
如果isempty(in)| | ~ isnumeric(in)| | in<0
打破
结束
num(end+1)=in;
结束
[M,索引]=最大值(num);
if~isempty(num)
disp(['The',num2str(INDEX),'是输入的最大值,为:',num2str(M),'.'))
其他的
disp('未输入值')
结束

您有
validInput
validInput
两种。Matlab区分大小写。还有其他问题……例如,如果输入
-1
,则将
计数器设置为0,而
计数器应在
while
循环之前初始化为0。并且不在任何地方存储
num
,而是为标量
计数器调用
max(counter)
。。。这还没有结束。好吧,我修正了这两件事,但是我如何在数组中读取大于或等于0的数字呢?请查看下面@NKN的解决方案。它利用了
-1这一事实,我建议将
MAX
重命名为其他名称:初学者可能没有意识到大写是有意的,他们可能稍后在另一个应用程序中重新定义
MAX
。这是真的。我做了改变。
num = [];

while (true)
    in = input('Enter a number or a non-numeric character to quit: ');

    if isempty(in) || ~isnumeric(in) || in < 0
        break
    end

    num(end+1) = in;
end

[M, INDEX] = max(num);

if ~isempty(num)
    disp(['The ', num2str(INDEX),' was the maximum entered value and was: ', num2str(M), '.'])
else
    disp('No value entered.')
end