VB 中的人口模型 - 不会接受输入值

Population Model In VB - Wont take input values

这是我的代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Birthrate As Double, GenerationNum As Integer
        Dim PopulationJuveniles, PopulationAdults, PopulationSeniles As Double
        Dim SurvivalJuveniles, SurvivalAdults, SurvivalSeniles As Double
        Dim NewJuveniles, NewAdults, NewSeniles As Double

        If Not Double.TryParse(txtBirthRate.Text, Birthrate) _
          OrElse Integer.TryParse(txtGenerations.Text, GenerationNum) Then
            MessageBox.Show("Enter valid numbers for birthrate and generations")
            Exit Sub
        End If

        If Not Double.TryParse(txtPJ.Text, PopulationJuveniles) _
          OrElse Double.TryParse(txtPA.Text, PopulationAdults) _
          OrElse Double.TryParse(txtPS.Text, PopulationSeniles) Then
            MessageBox.Show("Enter valid numbers for populations")
            Exit Sub
        End If

        If Not Double.TryParse(txtSJ.Text, SurvivalJuveniles) _
          OrElse Double.TryParse(txtSA.Text, SurvivalAdults) _
          OrElse Double.TryParse(txtSS.Text, SurvivalSeniles) Then
            MessageBox.Show("Enter valid numbers for survival")
            Exit Sub
        End If

        ListBox1.Items.Clear()
        For Counter As Integer = 1 To GenerationNum
            NewJuveniles = PopulationAdults * Birthrate
            NewAdults = PopulationJuveniles * SurvivalJuveniles 'the juveniles have matured 
            NewSeniles = PopulationAdults * SurvivalAdults 'Add + PopulationSeniles * SurvivalSeniles if SurvivalSeniles can ever be >0
            PopulationSeniles = NewSeniles
            PopulationAdults = NewAdults
            PopulationJuveniles = NewJuveniles
            ListBox1.Items.Add(PopulationJuveniles.ToString & ", " & PopulationAdults.ToString & ", " & PopulationSeniles.ToString)
        Next

当我尝试输入双精度值(例如 10.1 和 5 等整数)时,它只是说输入有效数字,但它们是有效数字!

任何人有任何建议或数字,我可以尝试看看它是否有效。

您需要在每个被评估的语句中使用关键字 NOT。

例如:

If Not Double.TryParse(txtPJ.Text, PopulationJuveniles) _
  OrElse Double.TryParse(txtPA.Text, PopulationAdults) _
  OrElse Double.TryParse(txtPS.Text, PopulationSeniles) Then
    MessageBox.Show("Enter valid numbers for populations")
    Exit Sub
End If

应改为:

If Not Double.TryParse(txtPJ.Text, PopulationJuveniles) _
  OrElse Not Double.TryParse(txtPA.Text, PopulationAdults) _
  OrElse Not Double.TryParse(txtPS.Text, PopulationSeniles) Then
    MessageBox.Show("Enter valid numbers for populations")
    Exit Sub
End If

解释:

在 VB.Net 中,每个布尔表达式都是独立计算的,因此第一个 NOT 只影响第一个表达式。如果您希望每个表达式具有相同的功能,那么每个表达式都需要自己的 NOT 关键字。