2

以下は、プログラムで使用している入力ダイアログ ボックスです。ユーザー入力が数値でない場合に「うまく」処理する方法を知っている人はいますか? また、数値が minlev - maxlev の範囲外の場合、エラー ダイアログがポップアップしますが、その前に入力ダイアログがポップアップするため、[OK] ボタンを押すことができません。これを修正する方法を知っている人はいますか?

RVP= 1;


while ( RVP )

prompt = {'Enter the corridor width (1050-1400mm) :'};

dlg_title = 'Input';

num_lines=1;

answer = inputdlg(prompt,dlg_title,num_lines);

    if(str2num(answer{1})<1050 || (str2num(answer{1})>1400))
       errordlg('Number is out of range');

    else 
        w1 = (2*answer{1}-1050-1400)/(1400-1050)


    end
end
4

1 に答える 1

1

を使用しisnumericます。その後、エラー ダイアログの後に inputdlg を再度呼び出すことができます。

errordlg ボックスが隠れないようにするには、uiwait を使用します。

while ( RVP )
    prompt = {'Enter the corridor width (1050-1400mm) :'};
    dlg_title = 'Input';
    num_lines=1;
    answer = inputdlg(prompt,dlg_title,num_lines);
    if ~isnumeric(answer) || (str2num(answer{1})<1050 || (str2num(answer{1})>1400))
        uiwait(errordlg('Number is out of range'));
        answer = inputdlg({'Please enter a valid input (1050-1400mm) :'},...
                          dlg_title,num_lines);
    end
        w1 = (2*answer{1}-1050-1400)/(1400-1050)
end
于 2013-08-15T17:01:32.647 に答える