2015-02-03 3 views
0

Назад снова с другим вопросом noob, который прослушивает дерьмо из меня. Я потратил 2 дня, пытаясь понять это. Кажется, что у меня и VB и отрицательные числа всегда возникают недоразумения.VB - Отрицательное число и условное обозначение

У меня есть все остальное в программе для расчета процентного калькулятора жира, кроме условного оператора, который ДОЛЖЕН распечатывать сообщение об ошибке, если либо двойное преобразование двух строк в текстовом поле меньше нуля. Однако, несмотря на то, что я вводил отрицательные числа для обоих при тестировании, программа пропускает мой оператор ошибки Else и в любом случае вычисляет два отрицательных числа и получает какое-то совершенно нелепое процентное процентное число. Это даже не похоже на то, что это просто происходит с выражениями, если часть кода «If-Then», как я делал математику, и процентный ответ не совпадают.

Private Sub btnCalculate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculate.Click 

    'Declare variables 
    Dim dblCaloriesInFood As Double 
    Dim dblGramsOfFat As Double 
    Dim dblPercentageOfCaloriesFromFat As Double 
    Dim dblCaloriesFromFat As Double 


    'Always initialize lblLowInFat message as not visible when button is clicked 
    lblLowInFat.Visible = False 

    Try 
     'Converting textbox strings to double. 

     dblCaloriesInFood = CDbl(txtCaloriesInFood.Text) 
     dblGramsOfFat = CDbl(txtGramsOfFat.Text) 

     If dblCaloriesInFood Or dblGramsOfFat > 0 Then 

      'Calculate Calories from fat 
      dblCaloriesFromFat = dblGramsOfFat * 9 

      'Calculate percentage of calories from fat 
      dblPercentageOfCaloriesFromFat = dblCaloriesFromFat/dblCaloriesInFood 

      'Display percentage of calories from fat 
      If dblPercentageOfCaloriesFromFat >= 0 Then 
       lblMessage.Text = dblPercentageOfCaloriesFromFat.ToString("p") 
      Else 
       lblMessage.Text = String.Empty 
      End If 

      'Display low fat message 
      If dblPercentageOfCaloriesFromFat <= 0.3 And dblPercentageOfCaloriesFromFat > 0 Then 
       lblLowInFat.Visible = True 
      End If 
     Else 
      'really tried to make this message work but couldn't figure it out. 
      'why does it only display this message when zero is entered and not when 
      'negative numbers are entered. instead it just calculates the negative numbers 
      'as if they were whole positive numbers or something, not sure because the percentage 
      'is way off the charts when i enter negative numbers. can't figure this out. 
      MessageBox.Show("Either the calories or fat grams were incorrectly entered") 
      txtCaloriesInFood.Text = String.Empty 
      txtGramsOfFat.Text = STring.Empty 
      txtCaloriesInFood.Focus() 

     End If 

    Catch 
     'error message for invalid input 
     MessageBox.Show("Please enter a numeric value for calories in food & number of fat grams.") 
     txtCaloriesInFood.Focus() 
    End Try 



End Sub 

ответ

4

Ваше заявление If неверно. Во-первых, вам нужно проверить два значения отдельно. Во-вторых, вы хотите, чтобы оба значения были больше нуля, поэтому вы должны использовать And вместо Or (это означает, что только один должен быть больше нуля).

If dblCaloriesInFood > 0 And dblGramsOfFat > 0 Then 
+0

Блестящий! Это сработало отлично. Огромное спасибо. – Popsiclestand

Смежные вопросы