Визуальная проблема зацикливания - PullRequest
0 голосов
/ 03 декабря 2018

Я новый программист, изучающий Visual Basic.Сейчас я работаю над проектом о табло для софтбола.Я немного работал над этим проектом, и меня смущает одна вещь.

То, над чем я смущен, - это правильное место для размещения моего цикла.Я пытаюсь сделать цикл while, но когда я пытаюсь, он позволяет мне ввести 7 подач, но как только я это сделаю, это бесконечный цикл с сообщением, разрешено только семь подач, и он не отображает lblTotal.Это работает без петли, но это просто не позволяет мне вводить все возможности вплотную.Я был бы очень признателен, если бы вы могли мне помочь.Я чувствую, что поместил петлю не в том месте.

Public Class frmSoftballScoreboard
    Const VALID_MESSAGE As String = "Enter valid runs value"
    Const ONLY_MESSAGE As String = "Only seven innings are allowed"
    'Declaring array
    Dim scores(6) As Double
    'declaring variables
    Dim runs As String
    Dim runningScore As Integer = 0
    Dim i As Integer = 0
    Dim out As Double

    'page load event
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        lstScores.Items.Add("Runs : Running Score")
    End Sub
    'Enter score button
    Private Sub btnScore_Click(sender As Object, e As EventArgs) Handles btnScore.Click
        Do While runs <= 7
            If i < scores.Length Then
                'display inputbox to the user
                runs = InputBox("Enter score for " & (i + 1) & " innings", "Score")
                'if runs is entered
                If runs < 0 Then
                    MessageBox.Show(VALID_MESSAGE)
                    Exit Sub
                ElseIf runs <> "" Then
                    'parse the value of runs
                    If (Double.TryParse(runs, out)) Then
                        'parse the runs and add it to the array scores()
                        scores(i) = Double.Parse(runs)
                        runningScore += scores(i)
                        'add the rainfall value to the listbox along with month name
                        lstScores.Items.Add(scores(i) & " :" & runningScore)
                        'increment the value of i
                        i = i + 1
                    Else
                        'display error message
                        MessageBox.Show(VALID_MESSAGE)
                        lblTotal.Text = ""
                    End If
                Else
                    'if runs is empty then display error message
                    MessageBox.Show("Enter runs for " & i & "innings")
                End If
            Else
                MessageBox.Show(ONLY_MESSAGE)
            End If
            If runs < 0 Then
                MessageBox.Show(VALID_MESSAGE)
            End If
        Loop
        'calculate total runs And display on the lable
        If scores(6) = 7 Then
            lblTotal.Text = String.Format("final score is {0}", scores.Sum())
        End If
    End Sub
    Private Sub mnuClear_Click(sender As Object, e As EventArgs) Handles mnuClear.Click
        lstScores.Items.Clear()
        lblTotal.Text = ""
        'reset i to 0
        i = 0
    End Sub
    'Exit Menu click
    Private Sub mnuExit_Click(sender As Object, e As EventArgs) Handles mnuExit.Click
        'close application
        Application.Exit()
    End Sub
End Class

1 Ответ

0 голосов
/ 03 декабря 2018
Do While runs <= 7

переменная 'выполнения' должна быть обновлена ​​(добавив +1) в цикле "делать то же самое", чтобы иметь возможность выполнить условие и выйти из него.

   (...)
   runs += 1
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...