0
votes

Inverser un mot, mais a eu une sortie étrange

Je fais de la pratique pour C # et que le problème me demande de faire un programme qui inverse les mots. J'ai la réponse, mais dans ma recherche d'une solution, j'ai eu une sortie bizarre qui n'a pas de sens.

Ceci est le code qui mène à la sortie bizarre: p>

using System;
namespace stars
{
    public class Reverse
    {
        public void SpinWords(string sentence)
        {
            //Obtain the largest index in sentence 
            int end_index = sentence.Length - 1;

            //Place letters backwards one-by-one to reverse string
            for (int i = end_index;  i >= 0; i--)
            {
                string letter = sentence.Substring(i, 1);
                Console.Write(letter);


            }


        }
    }
}


3 commentaires

Pouvez-vous partager l'exemple d'entrée et la sortie que vous obtenez? Et quelle est la production attendue?


Rev_Sentence = string.concat (Rev_Sentence, I); Concatéenates Rev_Sentence & i . Vous ne faites que concaténer votre variable de contrôle de boucle et imprimer le résultat chaque itération de la boucle. Cela devrait vouloir dire que le résultat n'est pas aléatoire, par exemple. spin words ("résultat"); devrait imprimer "554543543254321543210"


Notez que, pour inverser correctement une chaîne, les paires de substituts de substitution et la combinaison de la chaîne Unicode doivent être regroupées correctement et inversées en une seule unité, laissant la commande dans le groupe inchangé. Pour ce faire, voir Cette réponse à Meilleure façon d'inverser une chaîne .


3 Réponses :



1
votes

Ceci est le moyen d'inverser chaque caractère est comme ci-dessous:

var reversedWords = string.Join(" ",
      str.Split(' ')
         .Select(x => new String(x.Reverse().ToArray())));


2 commentaires

Il n'y a pas de "meilleur" moyen, il y a de bonnes manières pour un contexte donné;)


D'accord. Merci. Mise à jour de ma réponse



1
votes

Il y a deux raisons pour obtenir une large sortie numérique aléatoire.

premier fort>, vous concatéez le Rev_Sentence code> avec Index strong>, qui devrait être remplacé par la lettre lettre code>. p> xxx pré>

second strong>, vous imprimez la sortie à l'intérieur de la boucle pour la boucle em>, qui produira une sortie répétitive pour chaque concaténation. p>

Les éléments suivants doivent fonctionner comme prévu P>

for (int i = end_index; i >= 0; i--)
{
    string letter = sentence.Substring(i, 1);
    rev_sentence = string.Concat(rev_sentence, letter);
}
Console.Write(rev_sentence);


0 commentaires