1

我有一个字符串形式的整数数组。

string [] TriangleSideLengths

在这个数组中,将有 3 个 int 值表示三角形的边长。有没有一种方法可以将数组 TriangleSideLengths 中的所有 3 个值单独提取到三个 int 对象中,例如 int intSideLengthOne、intSideLengthTwo 和 intSideLengthThree。

我希望能够测试这三个值是否真的形成了一个有效的三角形?

例如,输入长度 10、10、100000 不会使其成为有效的等腰三角形。

我希望能够对存储在我的数组 TriangleSideLengths 中的三个值进行检查。

a + b > c
a + c > b
b + c > a

任何帮助是极大的赞赏。非常感谢!!:)

4

5 回答 5

6

您可以使用 LINQ 解析字符串中的数字,如下所示:

var threeSides = TriangleSideLengths.Select(int.Parse).ToArray();

这是关于 ideone 的演示

要进行检查,请按升序对数字进行排序,然后检查前两个的总和是否严格大于第三个:

Array.Sort(threeSides);
if (threeSides[0]+threeSides[1] > threeSides[2]) {
    ...
}

请注意,这些数字不是定义三角形的充分条件:您还必须检查这些数字是否严格为正。

于 2013-08-21T03:07:39.760 回答
0

尝试这个

string [] TriangleSideLengths = new string[3];
int[] lengths = new int[3];
for(int i = 0; i<=2;i++)
{
 lengths[i]=Convert.ToInt32(TriangleSideLengths[i]);
}
if(lengths[0]+lengths[1]>lengths[2])
   //go crazy
于 2013-08-21T03:14:03.300 回答
0
string[] TriangleSideLengths = { "10", "20", "300"};

int[] sides = new int[TriangleSideLengths.Length];

for (int i = 0; i < TriangleSideLengths.Length; i++)    
{       
    sides[i] = int.Parse(TriangleSideLengths[i]);    
}
于 2013-08-21T03:14:20.857 回答
0
int[] sides = new int[TriangleSideLengths.Length];
int counter=0;
foreach(var str in TriangleSideLengths)
{
   int.TryParse(str, out sides[counter++]);
}
if(sides[0] + sides[1] > sides[2]){...}
于 2013-08-21T10:42:02.387 回答
-1
public int toInt(string text)
{
    int tonumber = int.Parse(text);
    return tonumber;
}
于 2013-08-21T03:08:20.883 回答