How to request a specific user input?

I want to ask the user if they want to EXP1 or EXP2. If the user enters '1' or '2', then I want to display "running exp 1 or 2", otherwise I want the program to display error message until the user enters '1' or '2'.
prompt = input('Please enter 1 for EXP1 and 2 for EXP2:'); % ask
EXP = input(prompt);
if EXP == 1 || 2 % if the user doesnt input 1 or 2
disp('running exp 1 or 2')
else
EXP = input('ERROR. Please enter 1 for EXP1 and 2 for EXP2:'); %ask again
end
disp(EXP)
This is the code I wrote so far but I don't think that the logic is correct and I also when I try to input '1' or '2' I get the error:
"The first argument to INPUT must be a string or character"

2 个评论

Thanks, now my error is gone. But why if I enter a value that isn't 1 or 2, I dont get a warrning message?

请先登录,再进行评论。

 采纳的回答

This is the corrected version of your code
prompt = input('Please enter 1 for EXP1 and 2 for EXP2:');
EXP = prompt; % No need to do input(prompt);
if (EXP == 1 || EXP == 2) % do no write EXP == 1 || 2. Its incorrect
disp('running exp 1 or 2')
else
EXP = input('ERROR. Please enter 1 for EXP1 and 2 for EXP2:');
end
disp(EXP)
Note that after displaying 'ERROR.....', your program just stops and do not process with the newly entered value

3 个评论

Use a while loop to re-run the program
prompt = input('Please enter 1 for EXP1 and 2 for EXP2:');
EXP = prompt;
keepRunning = true;
while (keepRunning)
if (EXP == 1 || EXP == 2)
disp('running exp 1 or 2')
keepRunning = false;
else
EXP = input('ERROR. Please enter 1 for EXP1 and 2 for EXP2:');
end
end
disp(EXP)
Perfect! That's what I wanted :) thanks

请先登录,再进行评论。

更多回答(3 个)

You don't need "input" twice:
prompt = 'Please enter 1 for EXP1 and 2 for EXP2:'; % ask
EXP = input(prompt);
if EXP == 1 || 2 % if the user doesnt input 1 or 2
disp('running exp 1 or 2')
else
EXP = input('ERROR. Please enter 1 for EXP1 and 2 for EXP2:'); %ask again
end
disp(EXP)

1 个评论

Thanks, I removed the first input and my error is gone. But why if I enter a value that isn't 1 or 2, e.g. 3 I dont get a warrning message?

请先登录,再进行评论。

May do this ina while loop
prompt = 'Please enter 1 for EXP1 and 2 for EXP2:'; % ask
EXP = input(prompt);
while (EXP ~= 1 && EXP ~= 2) % if the user doesnt input 1 or 2
EXP = input('ERROR. Please enter 1 for EXP1 and 2 for EXP2:');
end
disp('running exp 1 or 2')
disp(EXP)

类别

帮助中心File Exchange 中查找有关 Data Type Identification 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by