Maison >développement back-end >C++ >Pourquoi ma calculatrice C # lance-t-elle une 'chaîne d'entrée n'était pas dans un format correct'?

Pourquoi ma calculatrice C # lance-t-elle une 'chaîne d'entrée n'était pas dans un format correct'?

DDD
DDDoriginal
2025-01-30 01:46:08299parcourir

Why Does My C# Calculator Throw an

Le dépannage de la "chaîne d'entrée n'était pas dans un format correct" dans votre calculatrice C #

Cette erreur C # commune, "La chaîne d'entrée n'était pas dans un format correct", apparaît généralement lorsque vous essayez de convertir une chaîne (comme du texte à partir d'une zone de texte) en un nombre (par exemple, un entier). Dans votre calculatrice, cela se produit probablement parce que le code tente de convertir le contenu de la zone de texte en entiers avant que l'utilisateur n'ait entré des nombres valides.

Le problème découle de l'initialisation des variables entières au sein du constructeur. À ce stade, les zones de texte sont vides ou contiennent des données non numériques, ce qui fait échouer Int32.Parse.

le correctif:

La solution consiste à déplacer la conversion de nombres aux gestionnaires d'événements de clic de bouton. Cela garantit que les zones de texte contiennent l'entrée de l'utilisateur avant la tentative de conversion.

Voici comment vous modifieriez les gestionnaires d'événements de clic de votre bouton:

<code class="language-csharp">private void button1_Click(object sender, EventArgs e)
{
    if (int.TryParse(textBox1.Text, out int a) && int.TryParse(textBox2.Text, out int b))
    {
        add(a, b);
        result();
    }
    else
    {
        // Handle invalid input (e.g., display an error message)
        MessageBox.Show("Please enter valid numbers."); 
    }
}

private void button2_Click(object sender, EventArgs e)
{
    if (int.TryParse(textBox1.Text, out int a) && int.TryParse(textBox2.Text, out int b))
    {
        subtract(a, b);
        result();
    }
    else
    {
        MessageBox.Show("Please enter valid numbers.");
    }
}</code>

Amélioration importante: en utilisant Int32.TryParse

Le code ci-dessus utilise Int32.TryParse au lieu de Int32.Parse. TryParse est nettement meilleur car il:

  • gère les erreurs gracieusement: Il renvoie true si la conversion est réussie et false sinon, empêchant le programme de s'écraser.
  • Fournit la vérification des erreurs: Vous pouvez ajouter une gestion des erreurs (comme l'exemple MessageBox.Show) pour informer l'utilisateur de l'entrée non valide.

Cette approche robuste rend votre calculatrice beaucoup plus conviviale et empêche des plantages inattendus. N'oubliez pas d'ajuster add() et subtract() pour accepter les paramètres int a et int b.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn