1
votes

Comment additionner tous les nombres dans une Listbox en utilisant TextBox?

Je veux compter et additionner toutes les valeurs dans une ListBox . Par exemple, j'ai les valeurs suivantes dans ma ListBox : 4 , 6 , 1 , 7 . Ma valeur actuelle est 18 . Si j'ajoute un 2 avec un TextBox , je dois obtenir 20 et si j'ajoute 5 je dois obtenir 25 au total.

Si je l'essaie avec le code ci-dessous, cela me donne un tout autre numéro.

Voici mon code:

private void AddButton_Click(object sender, EventArgs e)
{
    decimal sum;
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = "";

    for (int i = 0; i < listBox2.Items.Count; i++)
    {
        sum += Convert.ToDecimal(listBox2.Items[i].ToString());
    }

    Label1.Text = sum.ToString();
}


1 commentaires

Quel autre numéro vous donne-t-il? Pouvez-vous suivre le débogueur dans la boucle et vérifier chaque valeur ajoutée? Petit conseil: utilisez une boucle foreach au lieu d'une boucle for pour parcourir les éléments


5 Réponses :


2
votes

Vous avez manqué d'initialiser la valeur par défaut de sum. Attribuez sum = 0 avant d'ajouter des valeurs à la variable sum

private void AddButton_Click(object sender, EventArgs e)
{
    decimal sum = 0;  //Set sum = 0  by default
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = "";

    for (int i = 0; i < listBox2.Items.Count; i++)
    {
        //To check value of sum after each iteration, you can print it on console
        Console.WriteLine("Sum =" +sum);
        sum += Convert.ToDecimal(listBox2.Items[i].ToString());
    }

    Label1.Text = sum.ToString();
}


2 commentaires

Non, je l'ai essayé si j'avais les numéros suivants 4,5 et 6, cela montre comme résultat 28


Déboguez votre code et vérifiez la valeur de la somme. Console.WriteLine sera certainement utile ici.



0
votes
    private void button1_Click(object sender, EventArgs e)
    {
        var sum = 0;
        var value = 0;

        listBox1.Items.Add(textBox1.Text);

        foreach (var item in listBox1.Items)
        {
            if (!int.TryParse(item.ToString(), out value))
                continue;

            sum = sum + value;
        }

        label1.Text = sum.ToString();
        textBox1.Text = string.Empty;
    }

0 commentaires

1
votes

Désolé pour peut-être pas de réponse mais il est étrange que votre compilateur ne vous ait pas dit d'initialiser sum. La seconde, j'ai testé votre code et il fonctionne correctement comme prévu, cela signifie que si le problème n'est pas dans la variable de somme, vous avez fait autre chose dans ces champs ailleurs afin que votre code ne fonctionne pas correctement.

Ayant à l'esprit votre commentaire à la personne précédente, je dirais la même chose. Dans certains cas (je sais que c'est drôle mais) vous pouvez avoir des virus sur votre ordinateur. Vérifie ça. Une fois dans ma vie, j'ai échoué à mon travail de laboratoire de mathématiques à cause d'un virus qui a interrompu mon programme, donc il a dessiné le mauvais tableau! Malade je sais: D


2 commentaires

d'accord avec votre premier paragraphe mais pas avec le deuxième paragraphe. Seulement à cause du code d'initialisation par défaut donnait des résultats étranges. encore +1 pour le premier para ...


@PrasadTelkikar homme a dit qu'il avait essayé d'initialiser et avait toujours le problème xD



0
votes

Utilisation de la variable locale non attribuée 'sum', la somme doit être affectée avant utilisation!

decimal sum = 0;

Reste tout va bien


0 commentaires

0
votes

Vous devez définir sum sur 0 et il est probablement préférable d'utiliser un foreach au lieu d'un Dotloop.

private void AddButton_Click(object sender, EventArgs e) {
    decimal sum = 0;
    listBox2.Items.Add(TextBox1.Text);
    TextBox1.Text = ""; 
    foreach (string s in listBox2) { 
        sum += Convert.ToDecimal(s);
    } 
    Label1.Text = sum.ToString(); 
}


1 commentaires

foreach (var s in listBox2.Items) {...} veuillez le corriger. Vous devez parcourir les éléments qui ne sont pas avec ListBox. Votre code est bogué, veuillez le corriger