簡體   English   中英

如何將字符串的字符轉換為整數數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM