使用while循环和get()将键盘输入限制为特定字符

时间:2018-05-16 10:54:57

标签: matlab user-input matlab-figure

我试图将数字上可能输入的范围限制为' y'和' n'在Matlab中的while循环中。但是,下面的代码不起作用(至少我的理解)。

answ = get(fig, 'CurrentCharacter');
while answ ~= 'n' & answ ~= 'y'
  answ = get(fig, 'CurrentCharacter');
end

如何实现理想的行为?只有第一个输入似乎被get捕获。当我显示变量时,循环就会永远持续下去,即使回答中的字符清楚地表示是' n'或者' y'并且随后的按键不会改变。此外,有时候数字会消失,输入将开始被终端捕获。 在命令窗口中执行代码似乎产生了所需的行为:

>> answ

answ = n

>> answ ~= 'n' & answ ~= 'y'

ans = 0

answ = x

>> answ ~= 'n' & answ ~= 'y'

ans = 1

1 个答案:

答案 0 :(得分:0)

您不应该使用循环来侦听角色,而是使用数字回调! 例如:

fig = figure('KeyPressFcn',@Key_Down);

function Key_Down(src,event)
    switch event.Character
        case 'y'
            disp('y')
        case 'n'
            disp('n')
    end
end

'KeyPressFcn'是按下某个键时引发的事件,Matlab将调用您的Key_Down函数。在event结构中,您将找到Key,修饰符(Shift,CTRL等)和其他信息。