C#数组求和代码输出随机数而非正确结果的问题求助
C#数组求和代码输出随机数而非正确结果的问题求助
我是C#新手,最近在做一道数组求和的练习题,题目要求编写程序计算数组所有元素的和,测试数据如下:
输入数组元素个数:3
输入3个元素:
element - 0: 2
element - 1: 5
element - 2: 8预期输出:Sum of all elements stored in the array is: 15
我写的代码如下:
Console.Write("Enter the length of the array : "); int len = Convert.ToInt32 (Console.ReadLine()); int[] arr = new int[len]; for (int i = 0; i < len; i++) { arr[i] = Convert.ToInt32(Console.Read()); } Console.WriteLine(arr.Sum());
但运行后输出的不是正确结果,而是一些看起来像随机的数字,有没有大佬能帮我看看哪里错了呀?
嗨,兄弟,问题出在你用的Console.Read()上!
Console.Read()方法读取的是单个字符的ASCII码值,而不是你输入的整数。比如你输入2然后按回车,它会先读取字符'2'的ASCII码(也就是50),下一次循环会读取换行符的ASCII码(10),再下一次读取'5'的ASCII码(53)——这样数组里存的根本不是你输入的2、5、8,求和自然就不对了。
你应该把Console.Read()换成Console.ReadLine(),就像你读取数组长度时那样修改循环部分,还可以加上输入提示贴合题目要求的格式:
for (int i = 0; i < len; i++) { Console.Write($"element - {i}: "); arr[i] = Convert.ToInt32(Console.ReadLine()); }
另外,为了完全匹配题目预期的输出样式,最后可以把输出语句改成:
Console.WriteLine($"Sum of all elements stored in the array is: {arr.Sum()}");
这样修改后,运行程序输入对应的测试数据,就能得到正确的15啦!
备注:内容来源于stack exchange,提问作者Sagnik Majumder
相关产品推荐
相关产品推荐

