2013-08-21 103 views
1

我有一個字符串形式的整數數組。將字符串[]轉換爲int

string [] TriangleSideLengths 

在這個數組中會有3個int值代表三角形的邊長。有沒有一種方法可以將我的數組TriangleSideLengths中的所有3個值提取爲三個int對象,如int intSideLengthOne,intSideLengthTwo和intSideLengthThree。

我想能夠測試這三個值實際上是否構成一個有效的三角形?

例如,輸入長度10,10,100000不會使其成爲有效的等腰三角形。

我想能夠做到這一點檢查存儲在我的數組TriangleSideLengths三個值。

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

任何幫助,非常感謝。 非常感謝! :)

回答

6

您可以使用LINQ從字符串解析數字,像這樣:

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

這裏是一個demo on ideone

去做檢測,以升序排列的數字進行排序,然後檢查前兩者之和嚴格比第三個更大:

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

請注意,這不是對一個充分條件用於定義三角形的數字:您還必須檢查數字是否嚴格爲正值。

+0

嗨@dasblinkenlight,我已經有負數,字母和特殊字符的檢查。讓我給這個方法一個旋轉,我會在這裏報告。非常感謝 !! –

+0

這真棒,它的作品就像一個魅力!非常感謝這對我來說是一個很好的幫助:))))晚安:) @dasblinkenlight –

+0

@dashblinkenlight:沒有拆分,這是行不通的。你的編輯可能是爲了迴應他說他有三串字符串的事實,但如果是這樣的話,你應該確定你的變量的名字「strSides」是令人困惑的。 sideStrings的作用與OP的TriangleSideLengths一樣。 – jmoreno

-1
public int toInt(string text) 
{ 
    int tonumber = int.Parse(text); 
    return tonumber; 
} 
+0

該函數的用法與int.Parse中的內建函數有何不同? – jmoreno

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