# Dealing with wrong input

24 ビュー (過去 30 日間)
Lars Morsink 2019 年 9 月 3 日
コメント済み: Lars Morsink 2019 年 9 月 3 日
How do I avoid this error? I would like for users, if they enter a string instead of number to told "Those are not the instructions, please try again"
##### 4 件のコメント2 件の古いコメントを表示2 件の古いコメントを非表示
Rik 2019 年 9 月 3 日
Please post your code as code, not as a screenshot. You can find an explanation of the layout tools here.
Lars Morsink 2019 年 9 月 3 日
clc,
clear
Secret_Number = randi(100);
Attempts = 0;
Max_Attempts = 10;
Guess = -1; % The variable needs to be established to avoid an error in the 'while...end' loop and -1 guarantees that it is not equal to the secret number
disp (' ')
disp ('Instructions: Guess a number between 1 and 100. You have 10 guesses and a hint after each guess. Good luck!')
while (Attempts < Max_Attempts) && (Secret_Number ~= Guess)
disp (' ')
Attempts = Attempts + 1;
if Secret_Number == Guess
disp (' ')
disp ('Congratulations! You guessed the secret number!')
Attempts
elseif (Guess > Secret_Number) && (Attempts < Max_Attempts);
disp (' ')
disp ('Hint: Guess lower')
else
disp (' ')
disp ('Hint: Guess higher')
end
end
if Attempts == Max_Attempts & (Secret_Number ~= Guess);
disp (' ')
disp ('Game Over! You ran out of guesses. Please play again.')
Secret_Number
end

サインインしてコメントする。

### 回答 (2 件)

Stephen23 2019 年 9 月 3 日

str = '';
num = NaN;
while isnan(num)
num = str2double(input([str,'Enter a number: '],'s'));
str = 'Please try again! ';
end
And tested:
Enter a number: hello
Please try again! Enter a number: world
Please try again! Enter a number: 42
##### 0 件のコメント-2 件の古いコメントを表示-2 件の古いコメントを非表示

サインインしてコメントする。

Nicolas B. 2019 年 9 月 3 日

Okay, then I would use the exception catching method:
str = '';
num = NaN;
while isnan(num)
try
catch
disp('You must give a valid number!');
num = NaN;
end
end
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Rik 2019 年 9 月 3 日
That's also possible, although I think it would make slightly more sense to use Stephen's method, because then it also isn't possible to provide a variable name.
If you define a=9; before your loop, you can enter a in the prompt and it will pass the test. With Stephen's code, that is not possible.

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeJust for fun についてさらに検索

### Community Treasure Hunt

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

Start Hunting!

Translated by