#vb.net #math #addition
#vb.net #математика #добавление
Вопрос:
Я пытаюсь сделать так, чтобы, если кто-то хочет 3 или менее полосок на своих шортах, это стоило 50 центов за полоску сверх базовой стоимости 5,50 за пару шорт, а затем каждая полоса после третьей стоит 2 евро каждая. Это работает, если они выбрали 3 или меньше, но как только я ввожу любую сумму полос выше 3, она просто отображает базовую стоимость 5,50 для шорт. Не уверен, что делать любая помощь приветствуется.
Я правильно объявил все свои переменные, я предполагаю, что проблема в приведенном ниже коде
'calculate cost of Shorts
If mskShortStripes.Text <= 3 Then
dblTotalShorts = CDbl(mskShorts.Text * 5.5) (mskShortStripes.Text * 0.5)
ElseIf mskShortStripes.Text > 3 Then
dblTotalShorts = CDbl(mskShorts.Text * 5.5) (mskShortStripes.Text <= 3 * 0.5) (mskShortStripes.Text > 3 * 2)
End If
Комментарии:
1. Опечатка или базовая математика? (
stripes <= 3 * 0.5
против(stripes - 3) * 0.5
) 🙂2. Что вы имеете в виду? поправьте меня, если я ошибаюсь, но из того, что я закодировал, например, если пользователь ввел 7 полос, разве это не умножит 3 на .5 для первых полос, а затем оставшиеся 4 полосы будут умножены на 2, и оба они будут добавлены к общей стоимости шорт? Я смотрел на это в течение часа, так что простите меня, если это кажется простым, я, должно быть, схожу с ума
3. Включите
Option Strict On
поверх вашего файла VB. В вашем коде есть несколько ошибок синтаксиса и преобразования.4. Каков результат
stripes <= 3 * 0.5
операции? Обычный ноль (false равен 0 в VB) для двух или более полос.5. Он принимает значение, введенное пользователем в скрытом текстовом поле с именем mskShortsStripe, а затем, если это значение меньше или равно 3, оно умножается на 50 центов и добавляется к общей стоимости. Эта часть кода работает. Например, 2 полосы будут равны 2 x.5. Он просто перестает работать, когда у вас более 3 полос
Ответ №1:
Вы напрашиваетесь на проблемы, работая с .Text
объектом напрямую, как если бы это было число. Это не так. Забавные вещи случаются, когда значение под вашим контролем на самом деле не является числом.
Используйте целое число.Попробуйте преобразовать эту строку в число:
Dim numberOfStripes As Integer
If Integer.TryParse(mskShortStripes.Text, numberOfStripes) Then
If numberOfStripes >= 0 Then
' ... now do some math in here with the "numberOfStripes" variable ...
Else
MessageBox.Show("Number of Stripes can't be negative!")
End If
Else
MessageBox.Show("Invalid Number of Stripes!")
End If