在将2个转换为int的数组字符串添加到一起时,出现了一个我不理解的错误



这是我发现的错误:FormatException:输入字符串的格式不正确。系统数字StringToNumber(System.String str,System.Globalization.NumberStyles选项,System.Number+NumberBuffer&Number,System.Globalisation.NumberFormatInfo信息,System.Boolean parseDecimal((位于<437ba245d8404784b9fbab9b439ac908>:0(

编辑:自变量是5 4,很长的背景故事,但拆分是将5 5变成单词X=5,单词Y=4,然后将其相加。

string[] numbers = argument.Split(new[] { " " }, System.StringSplitOptions.None);
string wordX = numbers[0];
string wordY = numbers[1];
int numberX = Int32.Parse(wordX);
int numberY = Int32.Parse(wordY);
Debug.Log(numberX + numberY);

它为我工作的代码。

首先,我们假设自变量可能是这样的字符串"123456789">

然后你可以写:

string[] numbers = argument.Split();

最后,您只需要确保数字(即字符串[]类型(只包含可以转换为int变量的字符串。这可以通过多种方式来实现,比如Int.Tryparse或简单的try-catch块(看看哪一行出现异常(

我认为wordXwordY的字符串值无法解析为int。我建议您使用TryParse来避免异常。

if(int.TryParse(wordX, out int numberX) &&
int.TryParse(wordY, out int numberY))
{
Debug.Log(numberX + numberY);
}
else
{
// this will let you see why it was failing
Debug.Log($"Error Parsing: wordX is [{wordX ?? "null"}] and wordY is [{wordY ?? "null"}]");
}

检查此项:

using System;

string data = "1 2 3 4";
string[] s = data.Split(' ');
int num_X = Convert.ToInt32(s[0]);
int num_Y = Convert.ToInt32(s[1]);
Debug.Log(num_X + num_Y);

最新更新