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 关键字。
这是我的代码:
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 关键字。