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

通过索引获取学生列表项后,如何实现详情更新功能?

解决通过索引更新学生列表详情的问题

原代码存在遍历冗余、未处理索引越界、缺少修改逻辑、输出参数顺序错误等问题,以下是修正后的完整实现:

try
{
    Console.WriteLine("Updating the student details");
    Console.WriteLine("Enter the index at which to update a student details");
    
    // 验证输入是否为有效整数
    if (!int.TryParse(Console.ReadLine(), out int index))
    {
        Console.WriteLine("Invalid index input, please enter an integer.");
        return;
    }

    // 检查索引是否在有效范围内
    if (index < 0 || index >= Student.Count)
    {
        Console.WriteLine($"Index out of range. Valid range is 0 to {Student.Count - 1}");
        return;
    }

    // 直接通过索引获取学生对象,无需遍历列表
    var selectedStudent = Student[index];
    // 修正参数顺序,正确展示学生详情
    Console.WriteLine($"Id:{selectedStudent.ID}\nName:{selectedStudent.Name}\nMarks:{selectedStudent.Marks}");

    Console.WriteLine("What details you want to update? (Enter: Name/ID/Marks)");
    string updateChoice = Console.ReadLine().Trim().ToLower();

    switch (updateChoice)
    {
        case "name":
            Console.WriteLine("Enter new name:");
            selectedStudent.Name = Console.ReadLine().Trim();
            break;
        case "id":
            Console.WriteLine("Enter new ID:");
            if (int.TryParse(Console.ReadLine(), out int newId))
            {
                selectedStudent.ID = newId;
            }
            else
            {
                Console.WriteLine("Invalid ID input.");
            }
            break;
        case "marks":
            Console.WriteLine("Enter new marks:");
            if (int.TryParse(Console.ReadLine(), out int newMarks))
            {
                selectedStudent.Marks = newMarks;
            }
            else
            {
                Console.WriteLine("Invalid marks input.");
            }
            break;
        default:
            Console.WriteLine("Invalid choice.");
            break;
    }

    Console.WriteLine("Student details updated successfully!");
}                   
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

关键改进点:

  • 用int.TryParse代替Convert.ToInt32,避免输入非整数时抛出异常
  • 增加索引有效性检查,防止越界访问列表
  • 直接通过索引定位学生对象,去掉不必要的循环遍历
  • 修正详情展示的参数顺序,确保输出信息准确
  • 添加交互式修改逻辑,支持单独更新Name、ID、Marks字段
  • 对每个字段的输入做有效性验证,保证数据类型匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:09:24