How to make Matlab give different answers for different text inputs of different lengths
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Noah Cross
el 16 de Ag. de 2023
Comentada: Noah Cross
el 16 de Ag. de 2023
A = input('Ask me anything: ','s');
if A==('Are you sentient?')
disp('Yes')
else
disp('Ask me anything but that')
end
This only works if I ask "Are you sentient?", or input a sentence of equal length. So if I input "abc def ghijklmno" It'll take it and give the else answer, but if I simply ask it "Yes?" it gives me the error, "Arrays have incompatible sizes for this operation" What am I doing wrong?
0 comentarios
Respuesta aceptada
Stephen23
el 16 de Ag. de 2023
Editada: Stephen23
el 16 de Ag. de 2023
"What am I doing wrong?"
You are using EQ (i.e. ==) for character arrays, which performs a character-by-character comparison (exactly like using EQ on numeric arrays). If you want to compare the entire text use STRCMP, STRCMPI, or similar:
if strcmpi(A,'Are you sentient?')
2 comentarios
Más respuestas (2)
DGM
el 16 de Ag. de 2023
Editada: DGM
el 16 de Ag. de 2023
I figured that for multiple cases, it would be neater to use a switch-case.
A = input('How do you eat your oatmeal?: ','s');
switch lower(A)
case 'hot'
disp('Wow! Me too! We have so much in common.')
case 'cold'
disp('That''s kind of gross.')
case {'with my mouth','with a spoon'} % you can use grouped cases
disp('Ha ha, mister funny man.')
otherwise
disp('I didn''t expect you to say that')
end
Chunru
el 16 de Ag. de 2023
A = input('Ask me anything: ','s');
if strcmpi(A, 'Yes') % compare string (case insensitive)
disp('Yes')
else
disp('Ask me anything but that')
end
Ver también
Categorías
Más información sobre Graphics Performance en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!