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

如何在C#二维数组中为反对角线行列设置颜色?

二维数组反对角线黄色高亮实现方案

你的代码核心问题是DisplayMatrixWithCross方法中缺少反对角线的判断逻辑,且未正确处理控制台颜色重置,导致效果无法实现。以下是修正后的完整代码及关键说明:

修正后的DisplayMatrixWithCross方法

void DisplayMatrixWithCross(int[,] matrix)
{
    Console.WriteLine();
    int rowCount = matrix.GetLength(0);
    int colCount = matrix.GetLength(1);
    
    for (int rows = 0; rows < rowCount; rows++)
    {
        for (int columns = 0; columns < colCount; columns++)
        {
            // 重置控制台默认颜色,避免颜色残留
            Console.ResetColor();
            
            if (rows == columns)
            {
                // 主对角线:红色前景色
                Console.ForegroundColor = ConsoleColor.Red;
                Console.Write($"{matrix[rows, columns]:00} ");
            }
            else if (columns == colCount - 1 - rows)
            {
                // 反对角线:黄色背景+黑色前景,提升可读性
                Console.BackgroundColor = ConsoleColor.Yellow;
                Console.ForegroundColor = ConsoleColor.Black;
                Console.Write($"{matrix[rows, columns]:00} ");
            }
            else
            {
                // 默认白色前景色
                Console.ForegroundColor = ConsoleColor.White;
                Console.Write($"{matrix[rows, columns]:00} ");
            }
        }
        // 每行结束后重置颜色,确保下一行不受影响
        Console.ResetColor();
        Console.WriteLine();
    }
}

关键修正点说明

  • 反对角线定位逻辑:用columns == colCount - 1 - rows精准定位反对角线元素,该公式适配方阵和矩形矩阵,自动跳过不存在的元素(如矩形矩阵中超出列范围的情况)。
  • 颜色重置处理:每次输出前调用Console.ResetColor(),避免上一个元素的颜色设置影响当前元素;每行结束后再次重置,确保后续输出不受干扰。
  • 可读性优化:反对角线采用黄色背景搭配黑色前景,解决了黄色背景与白色前景对比度低、不易阅读的问题。
  • 代码简洁性:提取行列数到变量rowCount和colCount,减少重复计算,提升代码可读性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:20:24