C# 字符串数组到整数数组

C# 字符串数组到整数数组,c#,arrays,C#,Arrays,我试图从控制台获取一个字符串,并将所有元素放入一个int数组中。 它抛出一个错误,我的输入格式错误。我正在尝试使用“1 1 3 1 2 0 0”,我需要这些值作为int值,然后用它们执行一些计算 以下是我的尝试: class Program { static void Main() { string first = Console.ReadLine(); string[] First = new string[first.Length]; for (int

我试图从控制台获取一个字符串,并将所有元素放入一个int数组中。 它抛出一个错误,我的输入格式错误。我正在尝试使用“1 1 3 1 2 0 0”,我需要这些值作为int值,然后用它们执行一些计算

以下是我的尝试:

class Program
{
   static void Main()
   {

    string first = Console.ReadLine();
    string[] First = new string[first.Length];

    for (int i = 0; i < first.Length; i++)
    {
        First[i] += first[i];
    }

    int[] Arr = new int[First.Length];//int array for string console values
    for (int i = 0; i < First.Length; i++)//goes true all elements and converts them into Int32
    {
        Arr[i] = Convert.ToInt32(First[i].ToString());
    }
    for (int i = 0; i < Arr.Length; i++)//print array to see what happened
    {
        Console.WriteLine(Arr[i]);
    } 
 }
}
类程序
{
静态void Main()
{
string first=Console.ReadLine();
string[]First=新字符串[First.Length];
for(int i=0;i
试试这个

string str = "1 1 3 1 2 2 0 0";
int[] array = str.Split(' ').Select(int.Parse).ToArray(); 

您需要使用方法在字符串数组中用空格
'
拆分字符串,然后将每个元素转换为整数。您可以使用高效的方式迭代字符串数组

using System.Linq; //You need add reference to namespace

static void Main()
{
    string numbersStr = "1 1 3 1 2 2 0 0";
    int[] numbersArrary = numbersStr.Split(' ').Select(n => Convert.ToInt32(n)).ToArray();
}

尝试将其更改为:

string s = Console.ReadLine();
string[] arr = s.Split(' '); //Split the single string into multiple strings using space as delimiter
int[] intarr = new int[arr.Length];

for(int i=0;i<arr.Length;i++)
 {
  intarr[i] = int.Parse(arr[i]); //Parse the string as integers and fill the integer array
 }

for(int i=0;i<arr.Length;i++)
 {
  Console.Write(intarr[i]);
 }
string s=Console.ReadLine();
字符串[]arr=s.Split(“”)//使用空格作为分隔符将单个字符串拆分为多个字符串
int[]intarr=新int[arr.Length];

对于(int i=0;i您没有使用空格分隔符拆分字符串

        string first = Console.ReadLine();
        int len = first.Split(new []
                         {' '},StringSplitOptions.RemoveEmptyEntries).Length;
        string[] First = new string[len];

        for (int i = 0; i < len; i++)
        {
            First[i] = first.Split(' ')[i];
        }

        int[] Arr = new int[First.Length];//int array for string console values
        for (int i = 0; i < First.Length; i++)//goes true all elements and converts them into Int32
        {
            Arr[i] = Convert.ToInt32(First[i].ToString());
        }
        for (int i = 0; i < Arr.Length; i++)//print array to see what happened
        {
            Console.WriteLine(Arr[i]);
        }
string first=Console.ReadLine();
int len=first.Split(新[]
{'},StringSplitOptions.RemoveEmptyEntries)。长度;
string[]First=新字符串[len];
对于(int i=0;i
您不能尝试使用“1 1 3 1 2 0 0”,因为它试图解析数字之间的空格。如果您希望程序正常运行,您必须将输入字符串设置为“11312200”或者,如果分配的分隔符不超过一个,则可以创建一个字符数组或一个字符。通过传递分隔符拆分字符串,如下所示:

string Numbers = "1 1 3 1";

string[] seperatedNumbers = Numbers.Split(' ');

// perform your following actions
给你:

class Program
{
   static void Main()
   {
       string numberStr = Console.ReadLine(); // "1 2 3 1 2 3 1 2 ...."
       string[] splitted = numberStr.Split(' ');
       int[] nums = new int[splitted.Length];

       for(int i = 0 ; i < splitted.Length ; i++)
       {
         nums[i] = int.Parse(splitted[i]);
       }
   }
}
类程序
{
静态void Main()
{
字符串numberStr=Console.ReadLine();/“1 2 3 1 2….”
string[]splitted=numberStr.Split(“”);
int[]nums=新的int[splited.Length];
for(int i=0;i
您可以通过一个简单的扩展方法来实现这一点:

使用:

 var stringArray = "0,1,2,3,4,5";
 stringArray.ParseIntArray();
var stringArray = "0,1,2,3,4,5";
stringArray.TryParseIntArray();
代码:

如果你不想得到一个异常,你可以使用这个。 当抛出异常时,它返回
newint[]{0}

使用:

 var stringArray = "0,1,2,3,4,5";
 stringArray.ParseIntArray();
var stringArray = "0,1,2,3,4,5";
stringArray.TryParseIntArray();
代码:

public static int[] TryParseIntArray(this string source, char separator = ',')
{
   int[] arrInt;

   try
     {
       arrInt = Array.ConvertAll(source.Split(separator), int.Parse);          
     }
   catch (Exception ex)
     {
       arrInt = new int[] { 0 };
     }

  return arrInt;
}

您应该在第二行指定一个
String[]
变量。这是唯一一个处理数字之间多个空格的答案。GFG这样做是为了我。感谢您提供了一个很好的答案-顺便说一句,当出现异常时,最好返回一个空数组作为一般的最佳选择?