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

C#代码抛出Input string was not in a correct format错误,请求排查原因

问题分析与修复

错误原因

你的代码存在两个核心问题,直接导致了FormatException:

  1. 输入读取逻辑不符合题目要求
    题目明确每个测试用例是一行包含4个整数,但你用Console.ReadLine()单独读取4次(每次读一行)。当输入的测试用例行是类似0 0 0 0的带空格字符串时,Convert.ToInt32()无法将这种非纯数字字符串转换为整数,直接抛出格式错误。

  2. 测试用例循环逻辑错误
    你仅在循环前读取了一次4个裁判的结果,之后循环T次重复输出同一个结果,完全没有处理多组测试用例的输入需求。

修复后的代码

using System;

public class Test
{
    public static void Main()
    {
        int t = Convert.ToInt32(Console.ReadLine());
        
        for(int i = 0; i < t; i++)
        {
            // 读取当前测试用例的一行,按空格分割为字符串数组
            string[] parts = Console.ReadLine().Split();
            // 将分割后的字符串逐个转为整数
            int r1 = Convert.ToInt32(parts[0]);
            int r2 = Convert.ToInt32(parts[1]);
            int r3 = Convert.ToInt32(parts[2]);
            int r4 = Convert.ToInt32(parts[3]);
            
            if(r1 == 0 && r2 == 0 && r3 == 0 && r4 == 0)
            {
                Console.WriteLine("IN");
            }
            else
            {
                Console.WriteLine("OUT");
            }
        }
    }
}

额外优化建议

  • 可以用数组简化裁判结果的判断逻辑,避免重复的条件判断:
    int[] results = Array.ConvertAll(parts, int.Parse);
    if (Array.TrueForAll(results, x => x == 0))
    {
        Console.WriteLine("IN");
    }
    else
    {
        Console.WriteLine("OUT");
    }
    
  • 可添加输入合法性检查,比如判断分割后的数组长度是否为4,避免因输入格式异常导致程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:51:20