C#运行时错误

C#运行时错误,c#,runtime,C#,Runtime,我一直在尝试在以下链接中解决以下问题: 这是我的代码: using System; namespace URIProblemsBeginner { class Program { static void Main(string[] args) { int PRODUCT_ONE_CODE, PRODUCT_TWO_CODE, PRODUCT_ONE_UNITS, PRODUCT_TWO_UNITS; float PRODUCT_ONE_

我一直在尝试在以下链接中解决以下问题:

这是我的代码:

using System;

namespace URIProblemsBeginner {

 class Program

 {
    static void Main(string[] args)
    {
        int PRODUCT_ONE_CODE, PRODUCT_TWO_CODE, PRODUCT_ONE_UNITS, PRODUCT_TWO_UNITS;
        float PRODUCT_ONE_PRICE, PRODUCT_TWO_PRICE, VALUE_TO_PAY;

        PRODUCT_ONE_CODE = Convert.ToInt32(Console.ReadLine());
        PRODUCT_ONE_UNITS = Convert.ToInt32(Console.ReadLine());
        PRODUCT_ONE_PRICE = Convert.ToSingle(Console.ReadLine());
        PRODUCT_TWO_CODE = Convert.ToInt32(Console.ReadLine());
        PRODUCT_TWO_UNITS = Convert.ToInt32(Console.ReadLine());
        PRODUCT_TWO_PRICE = Convert.ToSingle(Console.ReadLine());

        VALUE_TO_PAY = (PRODUCT_ONE_UNITS * PRODUCT_ONE_PRICE) + (PRODUCT_TWO_UNITS * PRODUCT_TWO_PRICE);

        Console.WriteLine("VALOR A PAGAR: R$ " + VALUE_TO_PAY.ToString("F2"));
        Console.ReadLine();
    }
}
每当我在Visual Studio 2015中运行这段代码进行测试时,它都会毫无错误地运行。但每当我将其提交给URI编译器时,它都不接受我的答案,并给出一个运行时错误。 我不确定是否有bug


有人能帮忙吗?提前谢谢

根据问题陈述

输入文件包含两行数据。每一行都会有 3个值:两个整数和一个浮点值,后面有两位数字 小数点

。。。但是您编写的应用程序需要六行数据。一行表示产品一个代码,一行表示产品一个价格,等等

我相信你想要的方法是读一行,然后把它分成三个部分。大致如下的东西

使用制度

namespace URIProblemsBeginner
{
    internal class Program
    {
    private static void Main(string[] args)
    {
        int PRODUCT_ONE_CODE, PRODUCT_TWO_CODE, PRODUCT_ONE_UNITS, PRODUCT_TWO_UNITS;
        float PRODUCT_ONE_PRICE, PRODUCT_TWO_PRICE, VALUE_TO_PAY;

        ConvertInput(Console.ReadLine(), out PRODUCT_ONE_CODE, out PRODUCT_ONE_UNITS, out PRODUCT_ONE_PRICE);
        ConvertInput(Console.ReadLine(), out PRODUCT_TWO_CODE, out PRODUCT_TWO_UNITS, out PRODUCT_TWO_PRICE);

        VALUE_TO_PAY = (PRODUCT_ONE_UNITS*PRODUCT_ONE_PRICE) + (PRODUCT_TWO_UNITS*PRODUCT_TWO_PRICE);

        Console.WriteLine("VALOR A PAGAR: R$ " + VALUE_TO_PAY.ToString("F2"));
        Console.ReadLine();
    }

    private static void ConvertInput(string input, out int CODE, out int UNITS, out float PRICE)
    {
        string[] split = input.Split(' ');
        CODE = Convert.ToInt32(split[0]);
        UNITS = Convert.ToInt32(split[1]);
        PRICE = Convert.ToSingle(split[2]);
    }
}
}

课程计划
{
私有静态void Main(字符串[]args)
{
int PRODUCT_ONE_CODE、PRODUCT_TWO_CODE、PRODUCT_ONE_UNITS、PRODUCT_TWO_UNITS;
浮动产品一价、产品二价、价值对价;
ConvertInput(Console.ReadLine()、out PRODUCT\u ONE\u CODE、out PRODUCT\u ONE\u UNITS、out PRODUCT\u ONE\u PRICE);
ConvertInput(Console.ReadLine()、out PRODUCT\u TOWU CODE、out PRODUCT\u TOWU UNITS、out PRODUCT\u TOWU PRICE);
价值对报酬=(产品一个单位+产品一个单位价格)+(产品二个单位+产品二个单位价格);
Console.WriteLine(“VALOR A PAGAR:R$”+从价值到支付的ToString(“F2”);
Console.ReadLine();
}
私有静态输入(字符串输入、输出整数代码、输出整数单位、输出浮动价格)
{
列表拆分=输入.split(“”).ToList();
字符串[]changedInput=新字符串[3];

对于(int i=3-split.Count;我通过在调试模式下执行构建并在try catch中捕获异常来记录异常。如果使用有效输入,则可能没有使用正确的目标,就像任何cpu一样,32位、64位。是的,但在VS中运行时,您没有准确指定要输入的内容。如果您在六个单独的cpu上输入数据行,URI编译器只在2行上提供数据,那么您当然会看到不同的结果。查看输入示例…您是否键入了“12 1 5.30”如图所示,全部集中在一行上?OP询问为什么他可能在站点上出现运行时错误,而不是在VS中。如果URI进程提供了2行输入数据,并且他的代码中有6个Console.ReadLine命令,这似乎可能会导致运行时错误。如果我错了,我错了,但根据提供的信息,我仍然认为是这样合理的假设。添加注释和解释。对于有用的答案,请解释为什么这是问题的答案。
class Program
{

    private static void Main(string[] args)
    {
        int PRODUCT_ONE_CODE, PRODUCT_TWO_CODE, PRODUCT_ONE_UNITS, PRODUCT_TWO_UNITS;
        float PRODUCT_ONE_PRICE, PRODUCT_TWO_PRICE, VALUE_TO_PAY;

        ConvertInput(Console.ReadLine(), out PRODUCT_ONE_CODE, out PRODUCT_ONE_UNITS, out PRODUCT_ONE_PRICE);
        ConvertInput(Console.ReadLine(), out PRODUCT_TWO_CODE, out PRODUCT_TWO_UNITS, out PRODUCT_TWO_PRICE);

        VALUE_TO_PAY = (PRODUCT_ONE_UNITS + PRODUCT_ONE_PRICE) + (PRODUCT_TWO_UNITS + PRODUCT_TWO_PRICE);

        Console.WriteLine("VALOR A PAGAR: R$ " + VALUE_TO_PAY.ToString("F2"));
        Console.ReadLine();
    }
    private static void ConvertInput(string input, out int CODE , out int UNITS, out float PRICE)
    {
        List<string> split = input.Split(' ').ToList();
        string[] changedInput =new string[3];
        for (int i = 3 - split.Count; i <= 3; i++)
        {
            split.Add("0");
            if (split.Count ==3 )
            {
                break;
            }

        }
        int.TryParse(split[0], out CODE);
        int.TryParse(split[1], out UNITS);
        float.TryParse(split[2], out PRICE);
    }
}