我已經開始嘗試學習 c#。
我不明白為什么我使用Array.IndexOf();回傳-1。我希望它根據您從用戶輸入中獲得alphabet的字母回傳索引號。player_name我正在嘗試遍歷字符
player_name并捕獲字母表中該字符的索引號。
看一看:
using System;
namespace FantasyGame
{
internal class Program
{
static void Main(string[] args)
{
string player_name = null;
string[] alphabet = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "?", "?", "?", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "?", "?", "?" };
Console.Write("\nEnter your name: ");
player_name = Console.ReadLine();
string[] password = { };
foreach (char c in player_name)
{
int index = Array.IndexOf(alphabet, c);
Console.WriteLine(Array.IndexOf(alphabet, c));
Console.WriteLine(c);
}
}
}
}
如果我用c特定的字串值替換變數,例如"k"它回傳正確的索引號。為什么?'''c''' 有一個字串值,對吧?
uj5u.com熱心網友回復:
有
c一個字串值,對吧?
不,它是char有價值的。您可以看到宣告變數的位置:
foreach (char c in player_name)
對此有許多修復。我建議最簡單的方法是制作alphabet一個字串并使用string.IndexOf. 或者,為了使您的代碼盡可能相似,請制作alphabet一個char[],例如使用String.ToCharArray:
char[] alphabet = "abcdefghijklmnopqrstuvwxyz???abcdefghijklmnopqrstuvwxyz???".ToCharArray();
uj5u.com熱心網友回復:
代替
int index = Array.IndexOf(alphabet, c);
和
int index = Array.IndexOf(alphabet, c.ToString());
見官方檔案,
alphabet是一個字串陣列,所以我們應該將一個字串傳遞給第二個引數Array.IndexOf
uj5u.com熱心網友回復:
你的c不是一個string值,是一個char
uj5u.com熱心網友回復:
發生這種情況是因為您將 type 的 "c" 與 typeChar的字母進行比較String。你可以做的只是改變你正在使用的陣列的型別來Char[]喜歡這個。
char[] alphabet = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
'?', '?', '?', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '?', '?', '?' };
還要注意 char 型別使用單引號' ' 而 string 型別使用雙引號" " 的引號。
uj5u.com熱心網友回復:
MSDN 檔案Array.IndexOf()說
搜索指定物件并回傳其在一維陣列或陣列元素范圍內第一次出現的索引。
現在在你的代碼中,
如果你仔細觀察,你的
alphabet陣列是一個陣列string您的代碼
int index = Array.IndexOf(alphabet, c)正在嘗試在字母字串中查找 unicode char 值,這就是您得到 -1 的原因。為了使其作業,型別
alphabet和型別c需要相同。在某種意義上相同,如果字母是 achar[]那么c應該是 char。您可以通過兩種方式實作它,
- 轉換
alphabet為陣列char - 轉換
c為字串。
- 轉換
第一種方法,
char[] alphabet = "abcdefghijklmnopqrstuvwxyz???abcdefghijklmnopqrstuvwxyz???".ToCharArray();
int index = Array.IndexOf(alphabet, c); //here alphabet is a type of char array
第二種方法,
string[] alphabet = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "?", "?", "?", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "?", "?", "?" };
int index = Array.IndexOf(alphabet, c.ToString());
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/432749.html
下一篇:this在DOM和事件監聽器中
