2015-11-04 112 views
-1

我正在使用C#,並且在將字符串數組轉換爲int數組時遇到問題。 首先我創建字符串號碼與控制檯C#將字符串數組轉換爲Int數組

Console.WriteLine("Geben Sie die Nummer ein:"); 
string wert = Console.ReadLine(); 

然後我轉換的字符串以一個陣列

char[] wertarray = wert.ToCharArray(); 
wertarray1 = new string(wertarray);* 

現在來的問題。我想將字符串數組轉換爲int數組,但例如字符串wertarray1 [0] = 1時,int數組的值是49。

int wertarray2 = Convert.ToInt16(wertarray1[0]); 

普通的int的值應爲1,但我不`噸知道問題的所在。

我試着從這個論壇「轉換字符串數組到一個int數組」的解決方案,但我仍然有問題,int值得到一個奇怪的數字。

我期待尋求幫助。 謝謝:-)。

+0

從到Console.ReadLine測試獲取輸入,並轉換爲使用Int32.TryParse整數之後 – Steve

回答

0

提供的答案已經解釋了您的問題並提供瞭解決方案。

一般而言,您可以將char轉換爲stringparse將它們轉換爲整數(雖然不是最佳性能)。

如果你擁有所有的數字串

var numStr = "136"; 
var numbers = numStr.Select(n => int.Parse(n.ToString())).ToList(); // {1, 3, 6} 

如果字符串包含非數字太

var mixStr = "1.k78Tj_n"; 
int temp; 
var numbers2 = new List<int>(); 
mixStr.ToList().ForEach(n => 
{ 
    if (int.TryParse(n.ToString(), out temp)) 
     numbers2.Add(temp); 
}); //{ 1, 7, 8 } 
1

Convert.ToInt16(Char)取char(即它的Unicode代碼點值)的數值並返回該數字。雖然您可能認爲Convert.ToInt16('1')應該返回1,但考慮如果您嘗試Convert.ToInt16('@')會發生什麼情況。

使用Int16.Parse(或TryParse)實際上將字符串解析爲數字。至於你與個別人物的工作表示0-9,你不妨做它用簡單的算術,而無需調用任何Parse功能:

String line = Console.ReadLine(); 
List<Int16> numbers = new List<Int16>(line.Length); 
foreach(Char c in line) { 
    Int16 charValue = (Int16)c; 
    if(charValue < 48 || charValue > 57) throw new Exception("char is not a digit"); 
    Int16 value = charValue - 48; 
    numbers.Add(value); 
} 
相關問題