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

C#数组未获取输入值,输出全为零问题求助

问题分析与修复方案

核心问题

你目前的代码完全没有将用户输入的分数存入数组,只是调用Console.ReadLine()读取了输入但直接丢弃了结果。C#中新建的int数组默认所有元素都是0,所以不管是打印未排序数组还是排序后的数组,输出的都是全0值。此外,你的输入循环逻辑也存在错误,导致输入次数和数组长度不匹配。

修复后的完整代码

namespace HighScoreTable
{
    class Program
    {
        static void Main(string[] args)
        {
            bool valid = false;
            int HSTable = 0;
            while (!valid)
            {
                Console.WriteLine("How many high scores do you want?");
                if (Int32.TryParse(Console.ReadLine(), out HSTable) && HSTable > 0)
                {
                    valid = true;
                }
                else
                {
                    Console.Write("Invalid Input. ");
                }
            }

            Console.WriteLine("\n\nYou want  " + HSTable + "  highscores.");

            // 提前创建数组,准备存储输入的分数
            int[] highscores = new int[HSTable];

            Console.WriteLine("\nEnter your highscores:");
            // 遍历数组的每个位置,读取并验证输入的分数
            for (int i = 0; i < HSTable; i++)
            {
                bool scoreValid = false;
                while (!scoreValid)
                {
                    Console.Write($"Enter score #{i+1}: ");
                    if (Int32.TryParse(Console.ReadLine(), out int score))
                    {
                        highscores[i] = score;
                        scoreValid = true;
                    }
                    else
                    {
                        Console.WriteLine("Invalid score. Please enter an integer.");
                    }
                }
            }

            Console.WriteLine();
            Console.WriteLine("High Scores - Unsorted");
            PrintArray(highscores);

            SortArrayHighToLow(highscores);

            Console.WriteLine();
            Console.WriteLine("High Scores - Sorted");
            PrintArray(highscores);

            Console.Write("\n\nPress any key to exit . . .");
            Console.ReadKey();
        }

        public static void PrintArray(int[] highscores)
        {
            for (int i = 0; i < highscores.GetLength(0); i++)
            {
                Console.WriteLine(highscores[i]);
            }
        }

        static void SortArrayHighToLow(int[] numbers)
        {
            int tmp;
            for (int i = 1; i < numbers.Length; i++)
            {
                for (int j = i; j > 0 && numbers[j] > numbers[j - 1]; j--)
                {
                    tmp = numbers[j];
                    numbers[j] = numbers[j - 1];
                    numbers[j - 1] = tmp;
                }
            }
        }
    }
}

关键改动说明

  1. 提前创建数组并填充数据:在输入阶段就创建highscores数组,通过循环逐个读取用户输入的分数,解析为整数后存入数组对应索引的位置,确保输入的内容被正确保存。
  2. 完善输入验证:给分数输入也添加了验证逻辑,避免用户输入非整数内容导致程序出错。
  3. 修正循环逻辑:移除了原代码中多余的Console.ReadLine()调用,改为从i=0开始遍历数组,确保输入次数和数组长度完全匹配。
  4. 优化输入提示:添加了Enter score #{i+1}: 的提示,让用户清楚知道当前需要输入第几个分数,提升交互体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:55:23