我需要弄清楚如何根据用户输入值添加if..elseif..elseif语句来播放不同的声音文件
disp('Press A to play automatic speech program')
disp('Press any other key to manually control what to say')
input('Enter your selection:')
disp('1 - Check out whats new 5 - Irritate me 9 - Game show buzzer')
disp('2 - PacMan death 6 - About time 10 - The price is wrong')
disp('3 - Buy one get one free 7 - Hard drive crash 11 - Final Countdown')
disp('4 - Hasta la vista 8 - Ms Pacman death 12 - Goodbye')
disp('Press 12 to say goodbye or enter the voice number to play a voice:')
if 1
[y,Fs] = audioread('check_out_whats_new.wav');
sound(y,Fs)
end
if 2
[y,Fs] = audioread('pacman_death.wav');
sound(y,Fs)
end
答案 0 :(得分:0)
我建议使用switch语句来执行此操作:
selection = input('Enter your selection:');
switch selection
case 1
[y,Fs] = audioread('check_out_whats_new.wav');
sound(y,Fs)
case 2
[y,Fs] = audioread('pacman_death.wav');
sound(y,Fs)
% ...
end
要直接回答您的问题,请参阅if-elseif语句:
selection = input('Enter your selection:');
if selection == 1
[y,Fs] = audioread('check_out_whats_new.wav');
sound(y,Fs)
elseif selection == 2
[y,Fs] = audioread('pacman_death.wav');
sound(y,Fs)
end
解决注释中的问题,这可以通过使用带变量的while语句来实现,以便能够在需要时退出。以下代码执行此操作:
repeat = true;
while repeat
sel = input('Enter your selection:','s');
switch str2double(sel)
case 1
[y,Fs] = audioread('check_out_whats_new.wav');
sound(y,Fs);
case 2
[y,Fs] = audioread('pacman_death.wav');
sound(y,Fs);
% ... more cases
case 12
repeat = false; % exit the while-statement
otherwise
disp('no valid input');
end
end
请注意,我还添加了一些额外的处理。 's'
作为input
的第二个参数返回用户输入的字符串表示形式。使用str2double
,我们可以将字符串转换为数字,然后像以前一样使用开关。对于case 12
,您将repeat
设置为false
,这将在下一次迭代中退出while语句。如果用户输入与案例不匹配,它将再次询问输入。在这种情况下,使用otherwise
显示消息。