convertir nombre en mots
même si cette question a été posée et répondue avant. Je voulais de l'aide avec mon code. La tâche est de convertir un nombre en mots de 0 à 10 millions de dollars. J'ai essayé de le faire avec mon code en utilisant l'interface graphique, le problème est qu'il ne retourne pas une réponse à tout. Quelqu'un peut-il m'aider à identifier ce que le problème sur le code peut être.
code ci-dessous:
private void btnConvertToText_Click(object sender, EventArgs e)
{
string ConvertedNumber = " ";
int number = Convert.ToInt32(txtNumber.Text);
int Count = 0;
string [] ones = {" One ", " Two ", " Three ", " Four ", " Five ", " Six ", " Seven ", " Eight ", " Nine "};
string [] teens= {" Eleven ", " Twelve ", " Thirteen ", " Fourtte n ", " Fifteen ", " Sixteen ", " Seventeen ", " Eighteen ", " Nineteen "};
string [] tens = {" Ten ", " Twenty ", " Thirty ", " Fourty ", " Fifty ", " Sixty ", " Seventy ", " Eighty ", " Ninenty "};
string [] moreThenTens = {" hundred ", " thousand ", " million "};
while (number >= 0)
{
if (number == 0)
{
ConvertedNumber = "Zero";
}
else if (number < 10)
{
for (int Counter = 1; Counter < 10; Counter++)
{
ConvertedNumber += ones[Counter-1];
}
}
else if (number >= 10 && number < 100)
{
while (number > 10)
{
if (number > 10 && number < 20)
{
for (int x = 11; x < 20; x++)
{
if (number == x)
{
ConvertedNumber = teens[x - 11];
}
}
}
else
{
number -= 10;
Count++;
}
ConvertedNumber += tens[Count - 1];
}
}
else if (number >= 100 && number < 1000)
{
while (number > 100)
{
number -= 100;
Count++;
}
ConvertedNumber += ones[Count - 1] + moreThenTens[0];
}
else if (number >= 1000 && number < 10000)
{
while (number > 1000)
{
number -= 1000;
Count++;
}
ConvertedNumber += ones[Count - 1] + moreThenTens[1];
}
else if (number >= 10000 && number < 100000)
{
while (number > 10000)
{
if (number < 20000)
{
number -= 10000;
Count++;
}
else if (number >= 20000)
{
number -= 10000;
Count++;
}
}
if (Count >= 1)
{
if (number < 1000)
{
ConvertedNumber += tens[0] + moreThenTens[1];
}
else if (number >= 1000)
{
ConvertedNumber += teens[Count - 1] + moreThenTens[1];
}
}
else if (Count > 1)
{
ConvertedNumber += tens[Count - 1] + moreThenTens[1];
}
}
else if (number >= 100000 && number < 1000000)
{
while (number > 100000)
{
number -= 100000;
Count++;
}
ConvertedNumber += ones[Count - 1] + moreThenTens[0] + moreThenTens[1];
}
else if (number >= 1000000 && number < 10000000)
{
while (number > 1000000)
{
number -= 1000000;
Count++;
}
ConvertedNumber += ones[Count - 1] + moreThenTens[2];
}
else if (number == 10000000)
{
while (number > 10000000)
{
number -= 10000000;
Count++;
}
ConvertedNumber += tens[0] + moreThenTens[2];
}
}
txtConvertedNumber.Text = ConvertedNumber;
}
}
- double possible de la conversion de nombres en mots C#
- Avez-vous parcourir le code, avec un débogueur?
- Je pense que c'est blackbeltcoder.com/Articles/strings/converting-numbers-to-words ce que vous voulez.
Vous devez vous connecter pour publier un commentaire.
Il semble que votre code est de créer une boucle infinie. Prenons, par exemple:
Cela ne quittez pas votre boucle, et donc n'arrive jamais au
Utiliser une case pour convertir votre numéro, comme:
-1
au lieu de0
Cela peut être utile
Vous devriez vérifier si le nombre est égal à zéro avant la boucle while
Ensuite modifier le tout comme suit
cela peut aider pour nombre décimal
Cela permettrait aussi de travailler et de rendre votre code plus facile à déboguer /suivre.
Place de cette méthode dans le même
nameSpace
commebtnConvertToText_Click
.En général, je vous suggère de ne pas ajouter des numéros de magie, de l'ordre de +1 ou de -1 à votre code. Il peut faire du débogage d'un peu plus d'une corvée. Si vous avez à faire pour obtenir quelque chose à travailler pour essayer de comprendre pourquoi et de le réécrire les plus brefs délais. Bien sûr, avant de travailler sur d'autres méthodes.
semble comme il est coincé dans la boucle.. j'ai vérifié adolescent numéro de la partie ici, semble
comme vous avez oublié de diminuer ce nombre à moins de zéro ou zéro