MATLAB Answers

# while loop ends before the question is answered?

조회 수: 3(최근 30일)
Todd Wyzkiewicz 2020년 4월 6일
댓글: James Tursa 2020년 4월 7일
r=randi(51)+49;
%the random integer generator will give a number inbetween 50 nad 100 for the user to guess.
disp('I''m thinking of a number between 50 and 100. Can you guess what it is?')
disp('I''m going to have you guess the number and I''ll let you know if it''s right.')
disp(' ')
disp('What is you''re guess')
user_number=input('Please input your number here: ');
clc
%laying the ground rules for the game, so it is clear and easy to understand.
disp('Here''s your guess:')
disp(user_number)
%Making the answer placement more appearent.
count=0;
numguess=0;
chance=0;
while r>=50 || r<=100
r=r;
if user_number==r
disp('Nice job you guessed the right number!')
elseif user_number>r;
disp('You guess is too high. try again.')
user_number=input('enter new guess here');
elseif user_number<r;
disp('Your guessed the wrong number. try again.')
user_number=input('enter new guess here');
end
break
end
%I'm strugling to find a way to continues the loop when the question is asked wrong.

댓글을 달려면 로그인하십시오.

### 채택된 답변

James Tursa 2020년 4월 7일
편집: James Tursa 2020년 4월 7일
Your break is in the wrong place. It should be under one of the if conditions:
if user_number==r
disp('Nice job you guessed the right number!')
break
And you might give the user better feedback if the guess is too low:
elseif user_number<r;
disp('Your guess is too low. try again.')
##### 댓글 수: 7표시숨기기 이전 댓글 수: 6
Todd Wyzkiewicz 2020년 4월 7일
wow. didnt even see that I moved that, but actually fixed my problem. thank you bringing that to light

댓글을 달려면 로그인하십시오.

### 추가 답변(2개)

Walter Roberson 2020년 4월 6일
while r>=50 || r<=100
Suppose r is 73. Then r>=50 is true so the loop continues.
Suppose r is -6. Then r>=50 is false, but r<=100 is true, so the loop continues.
Suppose r is pi*10^8. Then r>=50 is true, so the loop continues.
The only way that your while loop will terminate is if the user enters NaN, or the user enters something that cannot be compared to numeric, such as a struct. (Or, very obscurely, some handle objects can be compared to numeric and the result will nearly always be 0.)
##### 댓글 수: 1표시숨기기 없음
Todd Wyzkiewicz 2020년 4월 7일
My issue is that it only give the user one chance to answer. The donain isnt the problem the code is just cutting out before the right answer is given?

댓글을 달려면 로그인하십시오.

Todd Wyzkiewicz 2020년 4월 7일
could the issue be with the
count=0;
numguess=0;
chance=0;
##### 댓글 수: 4표시숨기기 이전 댓글 수: 3
James Tursa 2020년 4월 7일
You don't use those variables, so you can delete those lines entirely and it won't make any difference to your code.

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

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

Start Hunting!