Member 13491139 Ответов: 1

Как я могу использовать свои операторы if, чтобы предотвратить сбой кода


Это Мой Код.


Вариант Строго По
Явный Параметр На
-Ричард Браун
'10/28/17
- Калькулятор Недельной Зарплаты
- Это программа, используемая для расчета недельной зарплаты.
Публичный класс frmPay

Private Sub btnCalculate_Click(sender As Object, e As EventArgs) обрабатывает btnCalculate.Щелчок
Тусклые часы, payPerHour, overtimeHours, pay As Decimal
InputData(часы, payPerHour)
CalculateValues(часы, payPerHour, overtimeHours, pay)
DisplayData(сверхурочные часы, оплата)
Конец Подводной Лодки
Суб ввод данные(как byref часов в виде десятичной, как byref payPerHour как десятичное)
Если IsNumeric(txtHoursWorked.Текст) = Ложь Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Статистика ключевые слова elseif(txtHourlyPay.Текст) = Ложь Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Ключевые слова elseif txtHoursWorked.Текст = "" Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Ключевые слова elseif txtHourlyPay.Текст = "" Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Конец, Если
часы = CDec(txtHoursWorked.Текст)
payPerHour = CDec(txtHourlyPay.Текст)


Конец Подводной Лодки
Суб CalculateValues(часы в виде десятичной, payPerHour как Double, byref по overtimeHours в виде десятичной, как byref платить в виде десятичной)

overtimeHours = Math.Abs(40 часов)
Если часов <= 40, то
pay = CDec((payPerHour * hours))
ElseIf часов > 40, то
оплата = CDec((CDec(payPerHour * hours) + (payPerHour * 1.5) * (overtimeHours)))
Конец, Если
Конец Подводной Лодки

Sub DisplayData(overtimeHours As Decimal, pay As Decimal)
txtOvertime.Text = CStr(сверхурочные часы)
txtWeeksPay.Текст = платить.ToString("C")
Конец Подводной Лодки
End Класса

Что я уже пробовал:

Я пробовал операторы If, но код продолжает падать.

Если IsNumeric(txtHoursWorked.Текст) = Ложь Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Статистика ключевые слова elseif(txtHourlyPay.Текст) = Ложь Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Ключевые слова elseif txtHoursWorked.Текст = "" Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Ключевые слова elseif txtHourlyPay.Текст = "" Тогда
Ящик для сообщений.Show("Пожалуйста, Введите Значение")
Конец, Если
Он Падает Здесь:

часы = CDec(txtHoursWorked.Текст)
payPerHour = CDec(txtHourlyPay.Текст)

1 Ответов

Рейтинг:
1

OriginalGriff

На первый взгляд, данные в вашем текстовом поле не являются допустимым числом.
Да, вы проверяете его - и выводите на экран окно сообщения. Но это все, что вы делаете.
Я бы предположил, что возвращение из метода, когда вы обнаружите проблему, будет гораздо лучшим способом сделать что-то, а также отобразить сообщение. В конце концов, нет никакого смысла продолжать, если "отработанные часы" были введены, например, как "сыр"...

Кроме того, наличие одного и того же сообщения об ошибке для каждой проблемы не помогает пользователю определить, где он ошибся.