While loop with multiple conditional statements not working

I created this while loop but when I input a fraction that should terminate the loop it doesn't exit the loop.
Ratio=1;
while (Ratio~=0 || Ratio~=(1/2) || Ratio~=1/3 || ...
Ratio~=1/5 || Ratio~=1/11 || Ratio~=5/7)
Ratio=(input('Enter a ratio (parts of milk)/(parts of coffee): '));
if (Ratio~=0 || Ratio~=1/2 || Ratio~=1/3 || ...
Ratio~=1/5 || Ratio~=1/11 || Ratio~=5/7)
disp('Invalid input');
end
end

2 Commenti

How can your variable Ratio have multiple values at the same time?

Accedi per commentare.

 Risposta accettata

Just get rid of that problematic while/input way of doing it and do it like this:
button = menu('Enter the ratio (parts of milk)/(parts of coffee)', '0', '1/2', '1/3', '1/5', '1/11', '5/7')
switch button
case 1
ratio = 0;
case 2
ratio = 1/2;
case 3
ratio = 1/3;
case 4
ratio = 1/5;
case 5
ratio = 1/11;
case 6
ratio = 5/7;
end
fprintf('The user chose ratio = %f\n', ratio);
No while loop is needed because the user is not able to select a disallowed input.

Più risposte (1)

you will never quit the loop because:
if a~=1 | a~= 2
this expression is always true
maby you should write
if a~=1 & a~= 2

Categorie

Scopri di più su Programming Utilities in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by