[英]How to convert a string's chars into an array of ints
我試圖接受用戶的輸入並將其轉換為整數數組。 問題是,當我選擇4個數字(例如2463)時,字符串的輸出正確,但是int數組的輸出不正確,似乎是選擇的數字+ 48。
我不太確定為什么會這樣。 感謝您提供的任何幫助。
string userChoiceAsString;
int[] userChoice = new int[4];
userChoiceAsString = (Console.ReadLine());
for (int i = 0; i < userChoiceAsString.Length; i++)
{
userChoice[i] = userChoiceAsString[i];
Console.WriteLine(userChoice[i]);
Console.WriteLine(userChoiceAsString[i]);
}
這是合理的,因為當用戶輸入字符2時,它對應於小數點50。這與ASCII表相關聯。
請在這里看看。
為了避免這種情況,您應該嘗試解析每個字符,如下所示:
userChoice[i] = Int32.Parse(userChoiceAsString[i].ToString());
或者您可以使用Char的方法GetNumericValue
,該方法返回一個浮點數,然后將其GetNumericValue
轉換為int。
userChoice[i] = (int)Char.GetNumericValue(userChoiceAsString[i]);
您需要使用int.Parse()將ASCII值轉換為int,否則將打印ASCII值。
嘗試:
userChoice[i] = (int)Char.GetNumericValue(userChoiceAsString[i]);
眾所周知,數字0由以ASCII,Unicode和其他幾種字符集表示的數值為48的字符表示。 字母A是65,以此類推。這實際上與實際數值無關,因為字符還代表字母和數百萬個沒有數值的其他字形。
您可以查看Char.GetNumericValue
方法,但請注意,它還會返回pi,e以及來自各種字符集的其他數字的數值。
我們通常要做的是檢查字符是否在'0'
和'9'
,如果是,則將值獲取為(int)ch - (int)'0'
。 這將返回您的數字與'0'
字符的距離,即您要查找的0..9值。 碰巧字符'0'..'9'
接連出現(這很有意義,但不一定如此)。
您也可以嘗試對單個字符或整個字符串進行int.Parse
。 這也可以像您期望的那樣處理通常的十進制數字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.