我正在制作一个刽子手游戏,在游戏开始时,玩家必须猜出的单词将被打印为星星。在尝试编写一次并且只是使用我无法修复的混乱代码之后,我才开始重新制作它。所以我决定再写一次。唯一的问题是,当我尝试通过使用array.ToString()来打印我的数组时;它只返回System.char []。见下文。
代码:
class Program
{
static void Main(string[] args)
{
string PlayerOneWord;
string PlayerTwoGuess;
int lives = 5;
Console.WriteLine("Welcome to hangman!\n PLayer one, Please enter the word which player Two needs to guess!");
PlayerOneWord = Console.ReadLine().ToLower();
var stars = new char[PlayerOneWord.Length];
for (int i = 0; i < stars.Length ; i++)
{
stars[i] = '*';
}
string StarString = stars.ToString();
Console.Write("Word to Guess: {0}" , StarString);
Console.ReadLine();
}
}
输出:
输出应该说Word to guess: Hello
。
请有人解释为什么会这样,因为这不是我第一次遇到这个问题。
答案 0 :(得分:8)
在简单数组上调用ToString
只返回"T[]"
,无论类型T
是什么。它对char[]
没有任何特殊处理。
要将char[]
转换为string
,您可以使用:
string s = new string(charArray);
但是对于你的具体问题,有一个更简单的解决方案:
string stars = new string('*', PlayerOneWord.Length);
构造函数public String(char c, int count)
重复c
count
次。
答案 1 :(得分:2)
变量stars
是一个字符数组。这就是您收到此错误的原因。正如MSDN
返回表示当前对象的字符串。
为了从这个数组中的字符中获取一个字符串,你可以使用它:
Console.Write("Word to Guess: {0}" , new String(stars));
答案 2 :(得分:2)
执行此操作的正确方法是:
string StarString = new string(stars);
ToString()调用Array-class的ToString方法的标准实现,对于所有Arrays都是相同的,并且类似于object只返回完全限定的类名。
答案 3 :(得分:0)
尝试以下代码:
static string ConvertCharArr2Str(char[] chs)
{
var s = "";
foreach (var c in chs)
{
s += c;
}
return s;
}