C#做CodeChef数组反转题时输入读取错误输出异常如何解决
问题分析与修复方案
错误原因
- 核心问题是误用了
Console.Read()方法:该方法每次仅读取输入流中的单个字符,返回值是该字符对应的ASCII编码数值,而非完整的整数。你输入的第二行内容1 2 3 4按字符拆分依次是'1'(ASCII值49)、空格(ASCII值32)、'2'(ASCII值50)、空格(ASCII值32),循环4次恰好读取前4个字符的ASCII值,倒序输出后就得到了你看到的32 50 32 49结果。 - 额外潜在问题:如果输入的整数位数大于1(比如10、23),用
Console.Read()完全无法读取到正确的整数值,只能逐字符读到每个数位的ASCII码。
修复方案
将第二行输入的读取逻辑改为先读整行,再拆分转换为整数数组即可,修改后代码如下:
using System; public class Test { public static void Main() { int N = Convert.ToInt32(Console.ReadLine()); // 读取第二行整行,按空格分割为字符串数组,过滤空值后转成int数组 int[] arr = Array.ConvertAll(Console.ReadLine().Split(new char[]{' '}, StringSplitOptions.RemoveEmptyEntries), int.Parse); for(int j = N - 1;j >= 0;j--){ Console.Write(arr[j]); Console.Write(" "); } } }
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

