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

C#中调用归并排序类出现控制台黑屏问题求助

问题诊断与修复方案

嘿,我看了你的代码,黑屏的问题其实是两个小细节导致的,咱们快速解决:

1. 缺失关键方法导致运行异常

你的Program类里调用了generateRandomSequence和OutputSequence,但没写这两个方法的实现!程序执行到这里直接崩溃,加上之前调用了Console.Clear()清空了屏幕,就表现成黑屏了。

先补上这俩方法的实现,直接加在Program类里就行:

// 生成指定数量和范围的随机数数组
static int[] generateRandomSequence(int count, int maxValue)
{
    Random random = new Random();
    int[] sequence = new int[count];
    for (int i = 0; i < count; i++)
    {
        sequence[i] = random.Next(0, maxValue + 1); // 让最大值也能被取到
    }
    return sequence;
}

// 输出数组内容到控制台
static void OutputSequence(int[] sequence)
{
    foreach (int num in sequence)
    {
        Console.Write(num + " ");
    }
}

2. 过早清屏造成的视觉误解

你在获取完用户输入后立刻调用了Console.Clear(),这会把输入界面直接清空,之后程序在排序的时候屏幕是空白的——如果生成的随机数数量多,排序耗时久,就会让你觉得是黑屏卡住了。

建议调整Console.Clear()的位置,或者在排序前加个提示,让用户知道程序在运行:

Console.Write("How Many Random Numbers Would you like to Generate : ");
int n = Convert.ToInt32(Console.ReadLine());
Console.Write("What is the Maximum Random Number Would you like to Generate : ");
int max = Convert.ToInt32(Console.ReadLine());

// 加个提示,替代过早的清屏
Console.WriteLine("\n正在排序,请稍候...");

int[] unsortedSequence = generateRandomSequence(n, max);
MergeSort mergeSortEngine = new MergeSort();
int[] mergeSortedArray = mergeSortEngine.Sort(unsortedSequence);

// 现在再清屏,准备输出结果
Console.Clear();
Console.Write("归并排序结果: \n\n");
OutputSequence(mergeSortedArray);
Console.WriteLine("\n\n按下任意键继续...");
Console.ReadKey();
Console.Clear();

额外的小优化

  • 你的merge方法是静态的,Sort方法却不是,其实可以把Sort也改成静态方法,这样调用的时候不用实例化对象,直接写MergeSort.Sort(unsortedSequence)就行,更简洁。
  • 给用户输入加个合法性判断,避免输入非数字或者负数导致程序崩溃:
int n;
Console.Write("How Many Random Numbers Would you like to Generate : ");
while (!int.TryParse(Console.ReadLine(), out n) || n <= 0)
{
    Console.Write("请输入有效的正整数: ");
}

把这些改完之后,程序就能正常运行,不会再出现黑屏的问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:38:09