私は単純な電卓プログラムで作業しています。私は何かが欠けていることを知っています。私は提供された手順を踏んだが、すでにいくつかの矛盾があったことをすでに指摘しているので、これが再び当てはまるか、情報が単に「欠落している」と確信している。私には2つの問題があります。 1つは、オペレータボタンを押す前に2番目の番号を押すと、2番目の(およびすべての連続した番号ボタンが押された)2番目の番号が連結されます。意味は、「1」→「2」を押すと「122」になります。 「3」を押すと「12233」と表示されます。私が持っている2番目の問題は、等価ボタンをコーディングする方法を理解できないことです。私はdblCurrentNumber.ToString()
という変数がEquals_click
に割り当てられると考えていました。しかし、それは動作しません。私は答えを教えたり、私のために私の任務を完了させる人を探しているわけではありません。それは学習の目的を破るでしょう。私は、私が逃しているものについて手がかりを探しているだけです。Visual Basic Calculatorを使用したロジック
Option Explicit On
Option Strict On
Imports System.Math
Public Class Calculator
'declare the global variables here
Dim dblResult As Double 'Stores the result of an operation
Dim dblCurrentNumber As Double 'Stores the current number in the display
Dim dblMemory As Double 'Stores a value placed in memory by the user
Dim blnStartNewNumber As Boolean 'Determines whether a new number should be started in the display
Dim strLastMathOperator As String 'Stores the operation selected by the user; possible values include Clear, Add, Subtract, Multiply, Divide or Equals
'''<summary>
'''clears the values of all variables
'''required to reset the calculator
'''</summary>
'''<remarks>none</remarks>
Private Sub resetCalculator()
Me.lblResult.Text = "0"
dblResult = 0
strLastMathOperator = "Clear"
blnStartNewNumber = True
dblCurrentNumber = 0
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
resetCalculator()
End Sub
Private Sub btnPower_Click(sender As Object, e As EventArgs) Handles btnPower.Click
'Clears the values of all variables
resetCalculator()
End Sub
Private Sub buildNumber(ByVal strNumber As String)
lblResult.Text = lblResult.Text & strNumber
dblCurrentNumber = Convert.ToDouble(lblResult.Text)
'Should we start a new number or add to an existing number?
If blnStartNewNumber Then
'start a new number
lblResult.Text = strNumber
Else
'append to the current number
lblResult.Text = lblResult.Text & strNumber
End If
blnStartNewNumber = False
End Sub
''' <summary>
''' Applies the last operator to result using current number
''' </summary>
''' <param name="strOperation">the math operation to
''' perform +, -, *,/or clear
'''</param>
Private Sub handleOperator(ByVal strOperation As String)
strLastMathOperator = strOperation
Select Case strLastMathOperator.ToUpper
Case "ADD"
dblResult = dblResult + dblCurrentNumber
Case "SUBTRACT"
dblResult = dblResult - dblCurrentNumber
Case "MULTIPLY"
dblResult = dblResult * dblCurrentNumber
Case "DIVIDE"
dblResult = dblResult/dblCurrentNumber
Case Else
dblResult = dblCurrentNumber
End Select
'dblCurrentNumber = dblResult
Me.lblResult.Text = dblCurrentNumber.ToString
Me.blnStartNewNumber = True
btnDecimal.Enabled = True
End Sub
Private Sub btn0_Click(sender As Object, e As EventArgs) Handles btn0.Click
buildNumber("0")
End Sub
Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click
buildNumber("1")
End Sub
Private Sub btn2_Click(sender As Object, e As EventArgs) Handles btn2.Click
buildNumber("2")
End Sub
Private Sub btn3_Click(sender As Object, e As EventArgs) Handles btn3.Click
buildNumber("3")
End Sub
Private Sub btn4_Click(sender As Object, e As EventArgs) Handles btn4.Click
buildNumber("4")
End Sub
Private Sub btn5_Click(sender As Object, e As EventArgs) Handles btn5.Click
buildNumber("5")
End Sub
Private Sub btn6_Click(sender As Object, e As EventArgs) Handles btn6.Click
buildNumber("6")
End Sub
Private Sub btn7_Click(sender As Object, e As EventArgs) Handles btn7.Click
buildNumber("7")
End Sub
Private Sub btn8_Click(sender As Object, e As EventArgs) Handles btn8.Click
buildNumber("8")
End Sub
Private Sub btn9_Click(sender As Object, e As EventArgs) Handles btn9.Click
buildNumber("9")
End Sub
Private Sub btnSquareRoot_Click(sender As Object, e As EventArgs) Handles btnSquareRoot.Click
dblCurrentNumber = Sqrt(dblCurrentNumber)
Me.lblResult.Text = Str(dblCurrentNumber)
End Sub
Private Sub btnPercent_Click(sender As Object, e As EventArgs) Handles btnPercent.Click
Me.lblResult.Text = Str(dblCurrentNumber/100)
dblCurrentNumber = dblCurrentNumber/100
blnStartNewNumber = True
End Sub
Private Sub btnPlusOrMinus_Click(sender As Object, e As EventArgs) Handles btnPlusOrMinus.Click
dblCurrentNumber = (dblCurrentNumber * (-1))
Me.lblResult.Text = dblCurrentNumber.ToString()
End Sub
Private Sub btnDivide_Click(sender As Object, e As EventArgs) Handles btnDivide.Click
handleOperator("DIVIDE")
End Sub
Private Sub btnMultiply_Click(sender As Object, e As EventArgs) Handles btnMultiply.Click
handleOperator("MULTIPLY")
End Sub
Private Sub btnSubtract_Click(sender As Object, e As EventArgs) Handles btnSubtract.Click
handleOperator("SUBTRACT")
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
handleOperator("ADD")
End Sub
Private Sub btnEquals_Click(sender As Object, e As EventArgs) Handles btnEquals.Click
dblCurrentNumber.ToString()
End Sub
End Class
デバッガでコードをステップ実行すると何が表示されますか? –
タグを[vba]ではなく[vb.net]に編集しました。 (私はVBAでは 'Imports'文も、' .ToString'メソッドも '.Net'でしか見られませんでした。)私が間違っていたら、変更をロールバックしてください。 – YowE3K
@ YowE3Kまたは 'Handles object.Event'どちらか;-) –