“La Conversion de la chaîne ” “ de type 'Double' n'est pas valide”

Je suis en train de faire un projet dans microsoft visual studio 2012 et je suis en train d'écrire une application pour déterminer le module de la moyenne.

Le script est le suivant:

JS:

 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles confirm.Click
        Dim sum As Double
        sum = CDbl(test.Text) * 50% + CDbl(project.Text) * 30% + CDbl(quiz.Text) * 30%
        Dim modulemark As Double
        modulemark = CDbl(CAmarks.Text) * 50% + CDbl(exam.Text) * 50%

        Dim Grade As String
        If sum < 40 Then
            Grade = "F"
        ElseIf sum >= 40 And modulemark < 65 And modulemark >= 40 Then
            Grade = "C"
        ElseIf sum >= 40 And modulemark < 75 And modulemark >= 65 Then
            Grade = "B"
        Else
            Grade = "A"
        End If

Le script est destiné à calculer les marques et donnez une note après avoir cliqué sur un bouton "Confirmer".

Cependant, lorsque j'ai essayé d'exécuter le codage il a dit:

Une exception non gérée du type 'System.InvalidCastException' s'est produite dans Microsoft.VisualBasic.dll

Informations supplémentaires: Conversion de la chaîne "" de type 'Double' n'est pas valide.

quelqu'un peut voir ce qui est mal? je suis nouveau dans Visual studio et j'apprécie votre aide.

P. S. édité récente script.

P. S. Merci pour l'utilisateur "Tim" pour le script mais pour une raison inconnue, sur la ligne "Double.TryParse(caMarks.Texte, caMarks)" il y a un bleu enchevêtrées qui dirige à caMarks qui dit "'Texte' n'est pas un membre de 'double'". C'est littéralement tirant sur mes cheveux! s'il vous plaît aider!

On dirait les noms des objets en conflit.

  • Bien ce qui est mal, c'est que vous êtes quelque part en essayant de convertir les "" pour un double. Probablement dans l'un des CDbl(*.texte) appels. Déboguer votre code et découvrez qui.
  • J'ai débogué et Il dit que la ligne " total = CDbl(test.Texte) * 50% + CDbl(du projet.Texte) * 30% + CDbl(quiz.Texte) * 30%" était erronée. P. S. j'ai essayé de tourner le "Dim Grade Entier" dans un "Dim Grade Comme Double" et il n'a toujours pas de travail. toutes les suggestions?
  • Avez-vous saisi les données dans tous les champs? Vous ne pouvez pas laisser de blancs et de supposer qu'ils seraient mis à 0.
  • Oui. J'ai encore à faire une vérification, cependant. Mais j'ai inséré le nom de l'étudiant, qui n'est pas montré et incomplet, et je vais le faire plus tard, tous les 4 sections (test, quiz, un projet, un examen), mais il n'a toujours pas de travail.
  • Pour identifier la source exacte de l'erreur, essayez de créer une variable distincte de type Double pour chaque comme Dim CMarks Double: CMarks=CDBL(CMarks.Texte) et ainsi de suite puis exécutez votre programme. Cela va vous montrer l'instruction qui est à l'origine du problème (mieux utiliser le mode de débogage).
  • Il m'a donné un message d'erreur indiquant ".Le texte n'est pas un membre de double."
  • Essayez de Changer somme = CDbl(test.Texte) * 50% + CDbl(du projet.Texte) * 30% + CDbl(quiz.Texte) * 30% à "somme = CDbl(Val(test.Texte)) * 50% + CDbl(Val(du projet.Texte)) * 30% + CDbl(Val(quiz.Texte)) * 30%"
  • C'est presque aussi mauvais que le code d'origine. CDbl et Val sont VB6 des rescapés. Double.TryParse est la bonne façon d'aller.
  • CDbl et similaire pour les opérateurs en VB ne sont pas hérités. CDbl de première classe est citoyen de l'VB langue. Ils sont définis dans le langage de spécification pour les VB.Net. Ils ne sont pas des fonctions, ils sont appelés "coulée opérateurs" Il n'y a aucune raison de ne pas les utiliser en VB.Net.

InformationsquelleAutor gheys damn | 2014-12-11