C#代码抛出Input string was not in a correct format错误,请求排查原因
问题分析与修复
错误原因
你的代码存在两个核心问题,直接导致了FormatException:
输入读取逻辑不符合题目要求
题目明确每个测试用例是一行包含4个整数,但你用Console.ReadLine()单独读取4次(每次读一行)。当输入的测试用例行是类似0 0 0 0的带空格字符串时,Convert.ToInt32()无法将这种非纯数字字符串转换为整数,直接抛出格式错误。测试用例循环逻辑错误
你仅在循环前读取了一次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
相关产品推荐
相关产品推荐

