私は厳密にコマンドプロンプトプログラムを作成していますが、ある時点で、ユーザーがキーボードのキーを押すまで(どちらか)実行を一時停止したいと思います。
これまで私はこれを試しました:
char cont =sc.next().charAt(0);
while(cont !=' ') {
try{
Thread.currentThread().sleep(1);
} catch(Exception e) {
System.out.println(e);
}
cont = sc.next().charAt(0);
}
この場合、「スペース」で実行を再開したかったのですが、入力にトリックを実行させたいと思います。
編集:より具体的には、ユーザーが入力として与えたものをユーザーに見せることなく、押されたキーですぐにプログラムを再開したいと思います。
まず第一にThread.currentThread().sleep(1);
、スレッドのフローを一時停止するために行う必要はありません。これは、ユーザーが入力を導入するまでプログラムが待機しているときに自動的に一時停止するためです。
char変数を使用する代わりに、String変数を使用して(スキャナークラスで使用する方が簡単です)、
try{
Thread.currentThread().sleep(1);
} catch(Exception e) {
System.out.println(e);
}
必要ないので。これが私のために働いたコードです:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String cont = input.nextLine();
while(!cont.equals(" ")) {
cont = input.nextLine();
}
}
他の解決策(はるかに複雑ですが)は、フレームを作成してそれにKeyListenerを追加することです(そうすれば、スペースバーが押されたときにユーザーには何も表示されず、プログラムは即座に実行されます)。
class frame extends JFrame{
frame(){
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getExtendedKeyCode() == KeyEvent.VK_SPACE){
//insert here the code you'd like to be executed when the user introduces a spacebar
}
}
@Override
public void keyReleased(KeyEvent e) {
}
});
setVisible(true);
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加