正在将字符串转换为和C#
本文关键字:转换 字符串 | 更新日期: 2023-09-27 18:25:51
所以这一次,我将数字作为列表输入,每个数字之间用空格分隔。我现在编写的代码将数字放在一行中,但当我尝试将字符串转换为Int32时失败了,导致程序失效,并且没有给出总数。我对错误的理解还不够好,无法准确地解释错误是什么。一个人是如何将拆分的字符串数组转换为数字来产生和的?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Dynamic_Entry
{
class Program
{
static void Main()
{
Console.Write("Please provide a list of numbers, separated by spaces: ");
string list = Console.ReadLine();
string[] parts = list.Split(' ');
int sum = 0;
for (int i = 0; i < parts.Length ; i++)
{
Console.WriteLine("{0, 5}", parts[i]);
}
sum = Convert.ToInt32(list);
Console.WriteLine("-----");
Console.Write("{0, 5}", sum);
Console.ReadLine();
}
}
}
for (int i = 0; i < parts.Length; i++)
{
Console.WriteLine("{0, 5}", parts[i]);
sum += Convert.ToInt32(parts[i]);
}
已修复。
您正试图将"1 2 3 4 5 55"转换为int
。您必须将"1"、"2"、"3"…转换为int
,并将它们添加到sum
。
我要补充的是,如果你想拆分字符串,最好做一些类似的事情
string[] parts = list.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
通过这种方式,删除了数字之间的多个空格(例如1、2、3)
Andrei发布了一个使用LINQ的非常简单的例子。。。
int sum = parts.Sum(p => Convert.ToInt32(p));
这将被置于for
循环之外。它转换为int
,并添加所有"部件"。意思是"对于每个part
,将其转换为int
并相加。返回总和"。
您可以将每个字符串转换为int,并按照@xanatos的建议将其添加到循环中,也可以使用LINQ和Enumerable.Sum(),例如:
var sum=parts.Sum(part=>Convert.ToInt32(part));
或
var sum=parts.Select(part=>Convert.ToInt32(part))
.Sum();
真正的好处是当你有更复杂的表达式时,例如当你需要过滤值、提取属性等时。
例如,您可以像这样过滤大于3的值:
var sum=parts.Select(part=>Convert.ToInt32(part))
.Where(num=>num>3)
.Sum();