Como assim “preparar a string para receber apenas um valor”?
Se o que você quer é restringir os possíveis valores de input do usuário para a stdin do seu processo, não tem como. Você precisa escrever a camada de interface entre o cliente e o domínio da sua aplicação. É nessa camada onde você vai barrar input inválida. No seu exemplo, o cliente é um teletype e você já escreveu essa camada usando o switch.
Do stdin não. Você não tem controle do ambiente onde o usuário está entrando com informações se quiser usar a stdin pra ler dados. Pode ser bash (ou outro shell qualquer), pode ser através de uma system call pra exec, etc.
O que você pode fazer é fazer a interface gráfica do seu próprio terminal e o usuário digita lá ao invés de usar o teletype pra mandar dados pra stdin do seu processo.
De qualquer forma, em algum lugar você vai ter que escrever o switch, de uma forma ou de outra.
ligar = lampada.getEstado(true); // onde foi declarada a variável lampada?
desligar = lampada.getEstado(true); // onde foi declarada a variável lampada?
Lampada lampada = new Lampada(); // só aqui que você declarou a variável lampada
E como é que você pretende usar a variável antes de ter declarado ela?
Na primeira e segunda linha você está tentando usar ela, mas ela só é declarada na terceira linha, ou seja, na primeira e segunda linha ela ainda não existe.