VB.net Impossible que la sortie apparaisse dans ma liste. Question débutants
Question
Essayer de faire en sorte que l'utilisateur place 3 nombres dans 3 zones de texte et en obtienne la moyenne.
Private Sub btnAverage_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAverage.Click
Dim a As Integer = CInt(txtone.Text)
Dim b As Integer = CInt(txtTwo.Text)
Dim c As Integer = CInt(txtThree.Text)
Dim average As Integer
average = (a + b + c) / 3
lstOutput.Text = average
End Sub
La solution
Essayez de remplacer le type de moyenne d'Integer par Double
.Dim average as Double
Actuellement, vous essayez de stocker la moyenne dans un entier qui ne peut contenir qu'un nombre entier. Les moyennes ont tendance à être des nombres non entiers et nécessitent un type de données pouvant le représenter. Double est bon pour la plupart des situations. Cela devrait résoudre votre problème.
EDIT Un opérateur a mentionné que lstOutput est un ListBox
C’est l’une des choses confuses avec WinForms. Même si chaque contrôle possède une propriété Text, tous ne font rien en réalité. Ils ne s'appliquent qu'aux éléments qui affichent directement un seul bloc de texte ou une seule valeur. Bouton Ex, étiquette, etc ...
Un ListBox, en revanche, affiche un groupe d’éléments. Vous souhaitez ajouter un nouvel élément à la liste.
lstOutput.Items.Add(average.ToString())
Autres conseils
La propriété Texte d'une zone de liste récupère ou définit le élément sélectionné . Vous n'avez pas encore ajouté votre moyenne à la liste.
Essayez:
lstOutput.Items.Add (moyenne)
Êtes-vous sûr que txtOne.text txtTwo.text et txtThree.txt sera toujours une valeur entière?
Vous devrez peut-être également modifier les vars a, b, c en doublons et vérifier que l'utilisateur n'a pas fourni de valeurs non numériques.
Si l'utilisateur met "un" " dans la zone de texte txtOne, vous obtiendrez une exception kablowee.
(codage de l'air ici)
dim a as new double
try
if isnumeric(txtOne.text.tostring.trim) then
a = cdbl(txtOne.text.tostring.trim)
end if
'repeat for b and c ...
catch ex as exception
messagebox.show(ex.message.tostring)
end try
Et, je ne suis pas sûr d'avoir raison, (peut-être que quelqu'un m'éclairera), mais est-ce que .NET considère la conversion de type de string en int différemment dans ces deux cas
a = cint(txtOne.text)
et
a = cint(txtOne.text.tostring)
???