3

プログラムを実行して支払いと利息の合計を計算しようとすると、「文字列 "" から型 'Double' への変換は無効です。」 というメッセージが表示されます。

私は何を間違っていますか?

Dim P As Double
Dim R As Double
Dim N As Double
Dim Payment As Double
Dim totalInterest As Double

Private Sub btnAnalyze_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnalyze.Click

P = CDbl(txtAmount.Text)
N = CDbl(txtDuration.Text)
R = CDbl(txtInterestRate.Text)

Payment = (P * R) / (1 - (1 + R) ^ (-N))
totalInterest = (N * Payment) - P

Payment = CDbl(txtPayment.Text)
totalInterest = CDbl(txtInterest.Text)

If P < 0 Then
MessageBox.Show("Please enter in loan amount")

End If

If R <= 0 Then
MessageBox.Show("Please enter in loan amount")

End If

If N <= 0 Then
MessageBox.Show("Please enter in loan amount")

End If


End Sub
End Class
4

4 に答える 4

4

項目の 1 つTextBoxが入力されていません。

CDblそのため、 などのを使用すると、が空P = CDbl(txtAmount.Text)の場合、このエラーが発生します。TextBox

より適切なオプションは、適切なメッセージを発生させることができるため、の代わりにDouble.TryParseを使用することです。CDbl

Private Sub btnAnalyze_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnalyze.Click

If Not Double.TryParse(txtAmount.Text, P) Then
     MessageBox.Show("Please correct the loan amount")
     Exit Sub
End If

' Do the same for all other CDbl checks
于 2012-09-28T01:08:41.933 に答える
1

CDbl() の代わりに、関数の Val() を使用すると、テキスト ボックスが空の場合、文字列がデフォルトの 0 に変換されます。その後、実行時エラーが発生しない場合があります..

于 2012-10-01T06:03:07.880 に答える
0

私はそれがあなたが望むという理由だけだと思います:

txtPayment.Text = CStr(Payment)
txtInterest.Text = CStr(totalInterest)

それ以外の

Payment = CDbl(txtPayment.Text)
totalInterest = CDbl(txtInterest.Text)
于 2012-10-01T05:56:47.537 に答える