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

C#解决Kattis平台Jumbo Javelin题出现运行时错误求排查

运行时错误原因及修复方案

核心错误原因

  • 你仅捕获了FormatException异常,但所有输入读取完毕后,Console.ReadLine()会返回null,此时调用int.Parse(null)会抛出ArgumentNullException,该异常未被捕获会直接导致程序崩溃,Kattis平台因此判定为运行时错误。
  • 额外逻辑问题:Jumbo Javelin题目第一行输入是标枪的总数量N,你直接将其当做第一个标枪的长度使用,会导致输入读取次数和预期不符,也可能间接触发异常。

修复代码(仅解决运行时错误)

using System;

namespace JumboJavelin
{
    class Program
    {
        static void Main(string[] args)
        {
            // 先读取第一行的总数量N,避免输入读取错位
            int N = int.Parse(Console.ReadLine());
            int sum = 0;
            int loss = 1;

            for (int n = 0; n < N; n++)
            {
                // 已知输入行数为N,直接读取即可,无需异常捕获避免漏抓错误
                int l = int.Parse(Console.ReadLine());
                sum += l;

                if((n + 1) % 2 == 0 && n != 0)
                {
                    sum -= ((n + 1) / 2)*loss;
                }
            }
            Console.WriteLine(sum);
            // 无需手动调用Environment.Exit,Main方法执行完程序会自然退出
        }
    }
}

兼容原有读取逻辑的调整方案

如果你一定要保留循环读取+异常捕获的逻辑,可以调整输入读取的判断逻辑,避免未捕获异常:

try
{
    string line = Console.ReadLine();
    // 输入读取完毕直接退出循环
    if (line == null) break;
    l = int.Parse(line);
}
catch (Exception)
{
    break;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:57:03