J'ai commencé à utiliser C # il y a quelques jours dans le cadre d'un cours d'algorithme. J'ai un devoir et il y a quelque chose dont j'ai besoin d'explication. J'ai besoin de créer un jeu du pendu avec trois niveaux, chaque niveau a quatre mots à deviner.
Ce que je veux imprimer à l'écran est:
Niveau 1: oooo
Niveau 2: oooo
Niveau 3: oooo
Le "cercle vide" sera rempli chaque fois qu'un mot est trouvé dans un niveau.
Pour rendre ceci, j'ai décidé de créer un char [] .
Voici la fonction que j'utilise:
Console.WriteLine("Level 1 : " + DisplayEmptyCircles(firstLevel));
Quand j'utilise ces deux instructions séparées, tout se passe bien:
Console.Write("Level 1 : ");
Console.Write(DisplayEmptyCircles(firstLevel));
Mais j'ai d'abord utilisé celle-ci et j'ai obtenu un System.Char [] imprimé à la place des cercles vides:
public static char[] DisplayEmptyCircles(List<string> listLevel)
{
char[] emptyCircle = new char[listLevel.Count];
for (int counterCircles = 0; counterCircles < listLevel.Count; counterCircles++)
{
emptyCircle[counterCircles] = Convert.ToChar(9675);
}
return emptyCircle;
}
Quelqu'un peut-il me dire pourquoi?
Je suis désolé, je sais que la question a déjà été posée mais je ne sais presque rien sur C #. C'est juste pour commencer à apprendre et à comprendre.
3 Réponses :
Votre DisplayEmptyCircles renvoie un tableau de char , il ne peut donc pas être concaténé en une chaîne. Vous pouvez soit faire en sorte que votre fonction renvoie une chaîne, soit convertir son résultat en chaîne lorsque vous appelez Console.Write .
Si vous souhaitez simplement créer une chaîne contenant N cercles, vous pouvez le faire de manière plus simple:
public static string DisplayEmptyCircles(int count)
{
return new string((char)9675, count);
}
Console.WriteLine("Level 1 : " + DisplayEmptyCircles(firstLevel.Count));
Quelques modifications supplémentaires dans le code: p >
char [] et utilise String (char c, int count) constuctor DisplayEmptyCircles n'a pas réellement besoin d'informations sur les niveaux, il n'a besoin que du nombre Convert.ToChar , car il ne fait que des vérifications supplémentaires, qui sont redondantes lorsque vous avez une valeur constante La Console.WriteLine convertit votre tableau de caractères en chaîne . Mais il ne peut pas convertir la combinaison de chaîne + tableau de caractères . Vous devez donc convertir le tableau de caractères en chaîne . Vous pouvez le faire dans votre fonction statique ou à la volée.
Dans votre fonction statique:
Console.WriteLine("Level 1 : " + new string(DisplayEmptyCircles(firstLevel)));
À la volée:
public static string DisplayEmptyCircles(List<string> listLevel)
{
char[] emptyCircle = new char[listLevel.Count];
for (int counterCircles = 0; counterCircles < listLevel.Count; counterCircles++)
{
emptyCircle[counterCircles] = Convert.ToChar(9675);
}
return new string(emptyCircle);
}
UPDATE:
Si vous voulez convertir le char [] dans la fonction statique, vous devrait utiliser l'approche de Yeldar Kurmangaliyev !
En effet, Console.Write () utilisera char [] comme entrée et dans Console.WriteLine (...) vous se terminera par la conversion de char [] en chaîne avec la méthode .ToString () . Utilisez nouvelle chaîne (DisplayEmptyCircles (firstLevel))
Console.WriteLine("Level 1 : " + new string(DisplayEmptyCircles(firstLevel)));
Si vous l'appelez séparément, l'un des overloads est utilisé, ce qui fait un travail supplémentaire pour vous.