Я работаю над программой, которая рассчитывает первоначальный взнос на дом с сложным процентом, накопленным за эти годы. Пользователь указывает сумму, которую он сэкономил, сумму годовых процентов (процентов) и количество лет, потраченных на накопление процентов.
Мне удалось выработать логику этого, используя цикл for. Мое назначение утверждает, что я также не должен принимать отрицательные числа или буквы, введенные в поле ввода. Здесь у меня проблемы.
Проблема 1: Если буквы вводятся в объект ввода «сбережения», программа вылетает и выдает следующий код ошибки: «Входная строка была в неправильном формате» ... это относится к следующая строка кода:
dubSavingsTotal = Convert.ToDouble(strSavingsTotal)
Проблема 2: Когда в поле ввода «Экономия» вводится отрицательное число, программа, похоже, игнорирует следующее выражение if
If dubSavingsTotal < 0 Then
strSavingsTotal = InputBox(strErrorMessageSavings, , "")
End If
Пожалуйста, прости меня, но казалось, что самый простой способ сделать это - использовать операторы if / else, заявив, что если заданное значение меньше 0 или не является числовым, то появится окно сообщения, и пользователь получит будет предложено ввести другой номер в поле ввода.
Это то, что я пытался описать ниже в своем коде, если я имею в виду, что операторы предназначены для того, чтобы запретить пользователю вводить буквы или отрицательные числа в поле ввода сбережений. Спасибо всем за любую помощь, она очень ценится.
Option Strict On
Public Class frmhomedownpayment
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
'This Code is executed when the user clicks on the "Enter Savings Data" button
'The user then enters the savings, interest and year values into an input box
'The data is then displayed to the right of the application window, while the interest
'amounts are calculated and displayed in the listbox object.
'Declare Variables
Dim dubSavingsTotal As Double
Dim dubInterestTotal As Double
Dim dubYearsTotal As Double
Dim dublistTotal As Double
Dim strSavingsTotal As String
Dim strInterestTotal As String
Dim strYearsTotal As String
Dim strSavingsTotalMessage As String = "Enter your current savings"
Dim strInterestTotalMessage As String = "Enter the annual interest amount."
Dim strInterestTotalMessage2 As String = "The number should be entered as a percent (5 for 5%)"
Dim strYearsTotalMessage As String = "Enter the Years"
Dim strErrorMessageYears As String = "Data Error (Years) : Enter a Numeric Value greater than 0!"
Dim strErrorMessageSavings As String = " Data Error (Savings) : Enter a Numeric Value greater than 0!"
Dim strErrorMessageInterest As String = " Data Error (Interest) : Enter a Numeric Value greater than 0!"
'Input Boxes
strSavingsTotal = InputBox(strSavingsTotalMessage, " ")
strInterestTotal = InputBox(strInterestTotalMessage & strInterestTotalMessage2, " ")
strYearsTotal = InputBox(strYearsTotalMessage, " ")
'Error Catching
If Not IsNumeric(dubSavingsTotal) Then
strSavingsTotal = InputBox(strErrorMessageSavings, , "")
End If
If dubSavingsTotal < 0 Then
strSavingsTotal = InputBox(strErrorMessageSavings, , "")
End If
'Conversions to Double
dubSavingsTotal = Convert.ToDouble(strSavingsTotal)
dubInterestTotal = Convert.ToDouble(strInterestTotal)
dubYearsTotal = Convert.ToDouble(strYearsTotal)
'We want the entered number to be expressed as a percentage
dubInterestTotal = dubInterestTotal / 100
'Display the Data
lblInterestTotal.Text = dubInterestTotal.ToString("P")
lblYearTotal.Text = strYearsTotal.ToString
lblSavingsTotal.Text = dubSavingsTotal.ToString("C")
'A 'For' loop that calculates the interest amounts and displays them
to a listbox object
***starting from the first year***
For dubYearsTotal = 1 To dubYearsTotal
dublistTotal = ((dubInterestTotal * dubSavingsTotal) *
dubYearsTotal)
lstTotals.Items.Add(dublistTotal + dubSavingsTotal)
Next
End Sub