字符串数组到Int数组

本文关键字:数组 Int 字符串 | 更新日期: 2023-09-27 17:59:06

我正试图从控制台获取一个字符串,并将所有元素放入一个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]);
    } 
 }
}

字符串数组到Int数组

尝试这个

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

演示

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

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();
}

DEMO

开始:

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]);
       }
   }
}

您没有使用空格分隔符拆分字符串。

        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 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]);
 }

您不能尝试使用"1 1 3 1 2 0 0",因为它试图解析数字之间的空格。如果你想让你的程序工作,你必须让你的输入字符串像这样:"11312200",或者你可以制作一个char数组,或者如果你没有多个分隔符,你可以只制作一个char.通过传递分隔符来分割字符串,像这样:

string Numbers = "1 1 3 1";
string[] seperatedNumbers = Numbers.Split(' ');
// perform your following actions

您可以使用一个简单的扩展方法:

使用:

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

代码:

//separator parameter: default value is ',' you can use whatever you want. ' ', '|', ';'
public static int[] ParseIntArray(this string source, char separator = ',')
{
   return Array.ConvertAll(source.Split(separator), int.Parse);
}

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

使用:

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;
}