Kbhit em java

Olá,

gostaria de saber como fazer o seguinte

um programa fica em loop infinito imprimindo a letra A, porém, quando alguém dá um clique no teclado ele imprime a letra B…

Basicamente queria fazer algo como o kbhit da linguagem C…

Obrigado.

É bem simples:
Vou montar um pseudocodigo aqui

String letra="A"; //inicialmente A
while (true){
    System.out.println(letra); 
    while (não houver interrupção do teclado)
        letra=pegaLetraDigitadaNoTeclado();
    }
}

Basta agora vc procurar como efetua a leitura do teclado. Busque no pacote JAVA.OI
Espero poder ter ajudado.

o que eu colocaria no lugar de “não houver interrupção do teclado” ???

olá

camilaoc, acho que isso ele já tinha uma idéia hehehe

bom, infelizmente não existe nada parecido com o kbhit() em java, então vc precisa fazer uma gambi… digo usar um outro meio para alcançar seus objetivos hehhee

[code]package teste;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;

public class Kbhit extends JFrame implements KeyListener {

private static final long serialVersionUID = 1L;

boolean kbhit = false;

public static void main(String[] args) throws Exception {
	Kbhit kbhit = new Kbhit();
	while (!kbhit.kbhit()) {
		System.out.print(".");
		Thread.sleep(500);
	}
	kbhit.dispose();
}

public Kbhit() {
	setSize(320, 240);
	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	addKeyListener(this);
	setVisible(true);
}

public boolean kbhit() {
	return kbhit;
}

public void keyPressed(KeyEvent e) {
	kbhit = true;
	System.out.println("keyPressed");
}

public void keyReleased(KeyEvent e) {
	System.out.println("keyReleased");
}

public void keyTyped(KeyEvent e) {
	System.out.println("keyTyped");
}

}
[/code]

O que fiz aí foi criar uma janela e um listener pros eventos do teclado, o único porém é que você precisa estar com o frame em foco para funcionar, e não consegui fazer apenas pelo console algo semelhante…

Espero que ajude :slight_smile: