2015-03-09 2 views
1

Я пытаюсь создать калькулятор, в котором пользователь вводит число (1-20), и дает пользователю возможность получить сумму или произведение от 1 до числа, которое они ввели. т.е. сумма 5 будет равна 15, тогда как продукт будет равен 120. Я использую select case и a для следующего цикла. Мне удалось получить правильную сумму части калькулятора, и я подумал, что могу использовать тот же принцип для части продукта, но у меня нет такой удачи. Любая помощь или нежный подталкивание в правильном направлении были бы весьма признательны. Cheers.Для следующих чисел умножения цикла

Код:

Dim intsum As Integer 
    Dim intnum As Integer 
    Dim intproduct As Integer 

    If IsNumeric(txtinput.Text) Then 
     intnum = CInt(txtinput.Text) 
    Else 
     MessageBox.Show("Please enter a numeric value", "Input error") 
     txtinput.Clear() 
     txtinput.Focus() 

    End If 

    If intnum >= 1 AndAlso intnum <= 20 Then 

     Select Case True 

      Case btnproduct.Checked 
       For P = 1 To intnum Step 1 
        intproduct = intproduct * P 

       Next 


      Case btnsum.Checked 
       For S = 1 To intnum Step 1 
        intsum = intsum + S 
       Next 




     End Select 
+0

Я думаю, вам нужно инициализировать 'initproduct' к 1. – Tachyon

+0

Вам необходимо инициализировать intproduct перед циклом, это будет постоянно нуль с указанным кодом. – DoctorMick

+0

Возможно, вам захочется пересмотреть диапазон поддерживаемых значений. '20!' = '2.432902e + 18', который не поместится в' Integer' –

ответ

1

Initialise intproduct к = 1, как в данный момент вы умножив значение на 0, так что всегда будет показывать окончательный результат как 0.

0

Вам не нужно проверьте значение intnum, если значение не является числовым.

Dim intsum As Integer 
Dim intnum As Integer 
Dim intproduct As Integer 

If IsNumeric(txtinput.Text) Then 
    intnum = CInt(txtinput.Text) 

    If intnum >= 1 AndAlso intnum <= 20 Then 

     Select Case True 

     Case btnproduct.Checked 
      For P = 1 To intnum Step 1 
       intproduct = intproduct * P 

      Next 


     Case btnsum.Checked 
      For S = 1 To intnum Step 1 
       intsum = intsum + S 
      Next 




     End Select 
    End If 
Else 
    MessageBox.Show("Please enter a numeric value", "Input error") 
    txtinput.Clear() 
    txtinput.Focus() 

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