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

C#生成不同量级随机整数文件并读取到ArrayList的实现问题

排序算法测试代码问题排查与修复

存在的问题汇总

  • 静态方法不能直接访问非静态的全局变量List和FileName,运行会直接报错
  • 调用Randomgen方法时参数不匹配,方法要求传2个参数,你只传了1个,而且传入的List未初始化没有实际作用
  • 逻辑和需求不符:Randomgen里只把数据加入了内存列表,完全没有执行写入文件的操作,你创建的StreamWriter没有用到
  • 类型使用混乱:同时混用List<int>和ArrayList,还出现了不存在的Integers类,new Integers()属于无效代码,直接存int类型值即可
  • 重复创建Random实例:短时间内创建多个Random会因为种子相同生成大量重复随机数,影响测试结果
  • IO资源未释放:StreamWriter和StreamReader使用后没有关闭,会导致文件被占用无法正常读写
  • 缺少读文件逻辑调用:代码全程没有调用populateListFromFile方法,没有实现“写文件再读入列表”的测试流程
  • 文件名未赋值:全程没有给FileName赋值,程序不知道要读写哪个文件

修复后可运行代码

using System;
using System.Collections.Generic;
using System.IO;

class SortTestProgram
{
    // 全局仅初始化一个Random实例,避免生成重复随机数
    private static readonly Random _random = new Random();

    static void Main(string[] args)
    {
        Console.WriteLine("请选择要生成的列表规模:");
        Console.WriteLine("1-小容量 2-中容量 3-大容量 4-超大容量");
        // 增加输入合法性校验,避免非法输入导致崩溃
        if (!int.TryParse(Console.ReadLine(), out int sizeChoice) || sizeChoice < 1 || sizeChoice > 4)
        {
            Console.WriteLine("输入无效,请输入1-4范围内的数字");
            return;
        }

        // 根据选择匹配对应数据量和存储文件名
        int dataCount;
        string fileName;
        switch (sizeChoice)
        {
            case 1:
                dataCount = 100;
                fileName = "small_data.txt";
                break;
            case 2:
                dataCount = 2000;
                fileName = "medium_data.txt";
                break;
            case 3:
                dataCount = 20000;
                fileName = "large_data.txt";
                break;
            case 4:
                dataCount = 200000;
                fileName = "xlarge_data.txt";
                break;
            default:
                return;
        }

        // 生成随机数写入目标文件
        GenerateRandomDataToFile(dataCount, fileName);
        Console.WriteLine($"随机数据已成功写入文件:{fileName}");

        // 从文件读取数据到列表,用于后续排序测试
        List<int> testData = PopulateListFromFile(fileName);
        Console.WriteLine($"已从文件读取{testData.Count}条数据到内存列表,可开始执行排序效率测试");

        // 此处添加你要测试的各类排序算法逻辑即可
    }

    /// <summary>
    /// 生成指定数量的随机整数并写入文本文件
    /// </summary>
    static void GenerateRandomDataToFile(int count, string fileName)
    {
        // using语句会自动释放StreamWriter资源,无需手动关闭,避免文件占用
        using (StreamWriter sw = new StreamWriter(fileName))
        {
            for (int i = 0; i < count; i++)
            {
                sw.WriteLine(_random.Next(1, int.MaxValue));
            }
        }
    }

    /// <summary>
    /// 从指定文本文件读取所有整数存入List并返回
    /// </summary>
    static List<int> PopulateListFromFile(string fileName)
    {
        List<int> result = new List<int>();
        using (StreamReader sr = new StreamReader(fileName))
        {
            while (!sr.EndOfStream)
            {
                if (int.TryParse(sr.ReadLine(), out int num))
                {
                    result.Add(num);
                }
            }
        }
        return result;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 09:57:02