首页 > 解决方案 > Kattis 使用 C# 解决 Jumbo Javelin 运行时错误

问题描述

我是 Kattis 的新手,正在尝试使用 C# 解决 Jumbo Javelin 挑战,但即使我以 0 退出程序,我也会遇到运行时错误。

这是我的代码:

using System;

namespace JumboJavelin
{
    class Program
    {
        static void Main(string[] args)
        {
            int l = int.Parse(Console.ReadLine());
            int sum = 0;
            int loss = 1;

            for (int n = 0; n <= 100; n++)
            {
                sum += l;

                if((n + 1) % 2 == 0 && !n.Equals(0))
                {
                    sum -= ((n + 1) / 2)*loss;
                }

                try
                {
                    l = int.Parse(Console.ReadLine());
                }
                catch (FormatException)
                {
                    break;
                }
            }
            Console.WriteLine(sum);
            Environment.Exit(0);
        }
    }
}

有人可以帮帮我吗?我知道我的解决方案最终会输出错误的答案,但现在我正试图摆脱运行时错误,因为它在 Visual Studio 2019 上运行良好。感谢所有帮助。谢谢

标签: c#runtime-error

解决方案


如果你改变你捕获的错误,Exception你会发现它实际上是一个错误的答案,所以出了点问题。0您确实在代码底部使用退出代码退出程序,但是,它会在Exception其他地方抛出一个。需要考虑两件事:

  1. 首先,问题陈述解释说,作为第一个输入,您得到一个整数N(这N表示他拥有的钢棒的数量),并且可以介于11001因此不包括在内1<N<=100)之间。1您现在有一个始终从到循环的循环100。并且循环应该从1最多循环到包括任何值N。试着看看你能做些什么。
  2. 其次,您在循环的“尾部”读取输入。这意味着在最后一个循环之后,您将执行另一个读取输入。并且您没有阅读第一个 l。l尝试在循环开始时更改读取输入。(并且您在 Main 中读取的第一个输入不应该是 for l(见第 1 点))。

看看这能让你走多远,有什么不清楚的地方请告诉我。


推荐阅读