2017-02-10 56 views
-2

我想要一個解決方案將輸入int say 010轉換爲int {0,1,0}列表。 下面是我嘗試過的代碼,直到遇到0。如何將int轉換爲列表<int>

Int num = 010; 
List<int> listOfInt = new List<int>(); 
While(num > 0) 
listOfInt.Add(num%10); 
num/= 10; 

我只是想分割輸入的int並將其轉換爲int列表。 LINQ很好,如果這可能是有效的! 謝謝!

+0

LINQ並不認同這一 – Hemal

+5

'010'處理絕不是int順便說一句,'010'是'10'時爲代表一個整數,前導零不可恢復。 –

+0

你可能會丟失'{'和'}' – Valentin

回答

5

正如其他已經提到010相同10當已經解析爲int。但是,例如,您可以將您的號碼作爲字符串來自控制檯輸入。

string myNumber = "010"; 

這可以在每一個字符很容易使用LINQ分裂:

var intList = myNumber.Select(x => Convert.ToInt32(x.ToString())).ToList(); 

由於每個字符在內部是一個int其中'0'等於49你必須每一個字符轉換爲字符串,這之前是通過使用ToString完成。

1
Console.WriteLine("Enter a number:") 
var input = Console.ReadLine(); 

List<int> result = input.Select(c => int.Parse(c.ToString())).ToList(); 
1
string num = "010"; 
List<int> listOfInt = new List<int>(); 
foreach(char item in num) 
{ 
    listOfInt.Add(Convert.ToInt32(item.ToString())); 
} 
+2

沒有轉換意味着你會得到一個int字符代碼列表 –

+0

在添加之前不需要從char到int的轉換它列出。 iirc,沒有從'char'到'int'的隱式轉換 –

+2

隱式地'(int)'1''是49 –

2

在計算機算術或現實生活中,010和10之間沒有區別。零是零。

如果你想將數字轉換爲特定字符串格式和提取字符,執行相同的步驟聲明:

10.ToString("000").Select(c=>c-48).ToList(); 

結果是與數字0,1,0的列表。

表達式c-48利用了字符本質上是整數,數字從0開始向上的優勢。所以圖48是0,1是49等

如果輸入是一個字符串,例如"10"你就必須用0墊之達到所希望的長度:

"10".PadLeft(3,'0').Select(c=>c-48).ToList() 

其結果將是0,1,0再次。

如果畢竟您只想從paddes字符串中檢索字符,那麼您只需要填充字符串,因爲字符串的一個IEnumerable。您可以將字符複製到陣列String.ToCharArray()或列表爲前:

"10".PadLeft(3,'0').ToList() 
相關問題