You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测CTRL+Z组合按键?C#控制台程序作业问题排查

解决Ctrl+Z组合键检测问题及代码修正

你的代码核心问题是仅判断了Z键,未同时验证Control修饰键,且忽略了Console.ReadLine()在用户按下Ctrl+Z时会返回null的特性,结合这两点就能实现正确的终止逻辑。

修正后的代码如下:

Console.Write("Enter a string: ");
string input = Console.ReadLine();
// 处理用户直接按Ctrl+Z的初始情况
if (input == null)
{
    Console.WriteLine("No strings entered.");
    return;
}

string longest = input;
string shortest = input;
ConsoleKeyInfo ki;

do
{
    Console.Write("Enter another string: ");
    input = Console.ReadLine();

    // 输入为null说明按下了Ctrl+Z,直接终止循环
    if (input == null)
        break;

    if (input.Length > longest.Length)
        longest = input;
    if (input.Length < shortest.Length)
        shortest = input;

    Console.WriteLine("Press enter to continue or <CTRL> + Z to exit");
    ki = Console.ReadKey(true);
// 同时检测Ctrl和Z键的组合
} while (!((ki.Modifiers & ConsoleModifiers.Control) != 0 && ki.Key == ConsoleKey.Z));

Console.WriteLine("Longest string: " + longest);
Console.WriteLine("Shortest string: " + shortest);
Console.ReadLine();

关键修正说明:

  • 新增input == null判断:用户在输入字符串时按下Ctrl+Z,Console.ReadLine()会返回null,此时直接终止循环
  • 组合键判断逻辑:(ki.Modifiers & ConsoleModifiers.Control) != 0 && ki.Key == ConsoleKey.Z,确保只有同时按下Ctrl和Z才触发退出
  • 优化变量命名为longest和shortest,提升代码可读性
  • 处理初始输入就按Ctrl+Z的边界场景,避免空引用异常

内容的提问来源于stack exchange,提问作者danytb8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 19:55:20