这是问题所在:给出一系列正整数,以空格分隔的数字串给出。编写一个程序,计算它们的总和。示例:" 43 68 9 23 318" - > 461。
那是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Exercises2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Give some numbers");
int i = 0, j = 0;
string n = Console.ReadLine();
string[] numbers = n.Split(' ');
int[] array;
for (i = 0; i < numbers.Length; i++)
{
array = new int[int.Parse(numbers[i])];
int s = Sum(array);
Console.Write("the sum of your numbers is: {0} ", s);
}
}
static int Sum(int[] array)
{
int sum = 0;
for (int i = 0; i < array.Length; i++)
{
sum += array[i];
}
return sum;
}
}
}
我不知道为什么它不起作用,给我的总和是0。 谢谢。
答案 0 :(得分:2)
问题是:
array = new int[int.Parse(numbers[i])];
你实际创建的数组的长度是给定的数字[i]。数组值都是0.所以
int s = Sum(array);
s始终为0.
正确的代码很简单:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Give some numbers");
int i = 0, j = 0;
string n = Console.ReadLine();
string[] numbers = n.Split(' ');
int s = 0;
for (i = 0; i < numbers.Length; i++)
{
s += int.Parse(numbers[i]);
}
Console.Write("the sum of your numbers is: {0} ", s);
Console.ReadLine();
}
}
答案 1 :(得分:1)
你应该只迭代由.Split和sum。检索的字符串数组的每个元素。
工作示例.Net Fiddle:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Program
{
public static void Main()
{
Console.WriteLine("Give some numbers");
string n = Console.ReadLine();
int sum = 0;
foreach(var i in n.Split(' ')){
sum += int.Parse(i);
}
Console.Write("the sum of your numbers is: {0} ", sum);
}
}
答案 2 :(得分:0)
代码有问题,你在summation数组中得到用户给定数组的值作为数组的初始化。 array = new int [int.Parse(numbers [i])]; 这里是循环数组,每次值得到初始化。根据您的输入&#34; 43 68 9 23 318&#34;。数组将初始化为43,然后是68,然后是9,依此类推。初始化数组时,int的值默认为0。
所以请使用正确的null和整数检查来引用此解决方案。希望这会对你有所帮助!
static void Main(string[] args)
{
Console.WriteLine("Give some numbers");
int i = 0;
string n = Console.ReadLine();
string[] numbers = n.Split(' ');
if (numbers != null && numbers.Length > 0)
{
int[] array = new int[numbers.Length];
int s = 0;
for (i = 0; i < numbers.Length; i++)
{
// Check if numbers[i] values is integer then add to array for some
int number;
bool result = Int32.TryParse(numbers[i], out number);
if (result)
{
array[i] = number;
}
}
s = Sum(array);
Console.Write("The sum of your numbers is: {0} ", s);
}
Console.Read();
}