2016-04-28 10 views
1

Ich habe dieses Verfahren und ich kann es nicht bekommen, um meine Eingabenummern sowie die richtige Anzahl von Punkten auszugeben Klasse.Aus irgendeinem Grund werden meine Eingabewerte nicht angezeigt und mein Chr (149) wird nicht korrekt ausgegeben.

Beispiel für die Ausgabe sein sollte:
High Grade ********* 94
Low Grade ******* 75
Reichweite ** 19
Durchschnittliche ***** *** 85

mit dem „*“ den Punkten repräsentieren die Klasse von 10

Aber aus irgendeinem Grunde geteilt sein I ** 0,00 für all meine Werte immer bin.

Private Sub btnStats_Click(sender As Object, e As EventArgs) Handles btnStats.Click 
    If DataOk() Then 
     Dim max, min, sum As Double 
     Dim dots As String = "" 


     lstOutput.Items.Clear() 
     lstOutput.Items.Add("Student Letter Grade Summary") 
     lstOutput.Items.Add("Course - " & txtCourse.Text) 
     lstOutput.Items.Add("Semester - " & txtSemester.Text) 
     DisplaySummary(dots, max, min, sum) 
     ProcessSummary(max, min, sum) 

    End If 

End Sub 
Sub ProcessSummary(ByRef max As Double, ByRef min As Double, ByRef sum As Double) 
    Dim grade As Integer 

    min = 0 
    max = 100 
    For i As Integer = 0 To lstGrade.Items.Count - 1 
     grade = CInt(lstGrade.Items(i)) 
     If grade > min Then 
      min = grade 
     End If 
     If grade < max Then 
      max = grade 
     End If 
     sum += grade 
    Next 
End Sub 
Sub DisplaySummary(ByRef dots As String, ByRef max As Double, ByRef min As Double, ByRef range As Double) 
    lstOutput.Items.Clear() 
    lstOutput.Items.Add("High grade " & " " & LineOfDots(CType(max/10, String)) & max.ToString("n2")) 
    lstOutput.Items.Add("Low grade " & " " & LineOfDots(CType(min/10, String)) & min.ToString("n2")) 
    lstOutput.Items.Add("Range " & " " & LineOfDots(CType(max - min/10, String)) & (max - min).ToString("n2")) 
    lstOutput.Items.Add("Average " & " " & LineOfDots(CType(max + min/10, String)) & ((max + min)/2).ToString("n2")) 

End Sub 
Function LineOfDots(ByVal dots As String) As String 
    For i As Integer = 1 To lstGrade.Items.Count - 1 
     LineOfDots &= Chr(149) 
    Next 

    Return LineOfDots 
End Function 
+0

Hmm. ..würde es möglicherweise einen Unterschied machen, wenn Sie 'ProcessSummary()' vor 'DisplaySummary()' aufrufen? ... –

+0

* facepalm * Okay, dass das behoben wurde verklagen Sie, dass die Noten nicht angezeigt werden, aber die richtige Anzahl von Punkten nicht angezeigt wird. Es ist immer besser zwei Augenpaare zu haben. Danke dafür! – Kyle

Antwort

1

ändern LineOfDots() eine Integer und verwenden Sie die String Constructor wie diese erhalten:

Function LineOfDots(ByVal dots As Integer) As String 
    Return New String(Chr(149), dots) 
End Function 

hier Dann wird ein neues Beispiel würde, wie man es nennen:

lstOutput.Items.Add("High grade " & LineOfDots(max/10) & " " & max.ToString("n2")) 
+0

ok danke, dass alles reibungslos funktioniert, außer für die Reichweite und den Durchschnitt. Es gibt aus, was zu sein scheint und unendlich viele Punkte – Kyle

+0

hat es behoben. Ich danke dir sehr! – Kyle

Verwandte Themen