Java如何在控制台中通过用户按指定按键终止无限循环?
控制台程序无限循环指定按键终止实现方法
核心实现逻辑
- 不能使用阻塞式按键读取接口,否则会暂停循环内的计算流程,无法满足边计算边检测按键的需求
- 每次循环迭代中加入非阻塞按键检测逻辑,检测到指定按键按下时直接跳出循环即可
不同语言实现示例
C/C++(Windows平台)
使用conio.h提供的非阻塞接口实现:
#include <conio.h> #include <stdio.h> int main() { do { // 此处放置你的计算逻辑 printf("循环运行中...\n"); if (_kbhit()) { // 非阻塞检测是否有按键按下 char pressedKey = _getch(); if (pressedKey == 'q') { // 指定按小写q终止循环 printf("检测到终止按键,退出循环\n"); break; } } } while (1); return 0; }
注:Linux平台下可使用ncurses库的
getch()配合nodelay()配置实现同等非阻塞检测效果。
C#
while (true) { // 此处放置你的计算逻辑 Console.WriteLine("循环运行中..."); if (Console.KeyAvailable) { // 参数true表示按下的按键不会回显到控制台 ConsoleKeyInfo keyInfo = Console.ReadKey(true); if (keyInfo.Key == ConsoleKey.Q) { Console.WriteLine("检测到终止按键,退出循环"); break; } } }
Python
需要先安装第三方库keyboard:pip install keyboard
import keyboard import time while True: # 此处放置你的计算逻辑 print("循环运行中...") time.sleep(0.1) if keyboard.is_pressed("q"): print("检测到终止按键,退出循环") break
内容的提问来源于stack exchange,提问作者JOEGREEN
相关产品推荐
相关产品推荐

