Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何在VB计算器程序中显示中间结果_Vb.net_Calculator - Fatal编程技术网

Vb.net 如何在VB计算器程序中显示中间结果

Vb.net 如何在VB计算器程序中显示中间结果,vb.net,calculator,Vb.net,Calculator,我正在编写一个简单的VisualBasic四函数计算器加、减、乘、除应用程序,我想在按下运算符时显示一个中间结果 我创建的Windows窗体包含按钮,因此只需要在GUI上单击鼠标即可输入,无需键盘输入 根据要求中的定义,将根据以下顺序规则输入完整的问题: 一个数字,后跟 一个操作员键,后跟 另一个数字,后跟 也可以重复步骤2,在按下操作员或equals按钮时显示中间结果。 我知道需要在操作员点击事件中进行更改以满足此要求,但我不知道如何进行更改 下面是加法、减法、乘法、除法和等于按钮的代码 Di

我正在编写一个简单的VisualBasic四函数计算器加、减、乘、除应用程序,我想在按下运算符时显示一个中间结果

我创建的Windows窗体包含按钮,因此只需要在GUI上单击鼠标即可输入,无需键盘输入

根据要求中的定义,将根据以下顺序规则输入完整的问题:

一个数字,后跟 一个操作员键,后跟 另一个数字,后跟 也可以重复步骤2,在按下操作员或equals按钮时显示中间结果。 我知道需要在操作员点击事件中进行更改以满足此要求,但我不知道如何进行更改

下面是加法、减法、乘法、除法和等于按钮的代码

Dim txtNumber As String
Dim variable1 As Decimal
Dim variable2 As Decimal
Dim answerResult As Decimal
Dim arithmeticProcess As String

 Private Sub btnAdd_Click(sender As System.Object, e As System.EventArgs) Handles btnAdd.Click
    If answerResult <> 0 Then
        answerResult = variable1 + variable2
        variable1 = CDec(lblDisplay.Text)
        lblDisplay.Text = ""
        arithmeticProcess = "+"
    Else
        variable1 = CDec(lblDisplay.Text)
        lblDisplay.Text = ""
        arithmeticProcess = "+"
    End If


End Sub

Private Sub btnSubtract_Click(sender As System.Object, e As System.EventArgs) Handles btnSubtract.Click
    variable1 = CDec(lblDisplay.Text)
    lblDisplay.Text = ""
    arithmeticProcess = "-"
End Sub

Private Sub btnMultiply_Click(sender As System.Object, e As System.EventArgs) Handles btnMultiply.Click
    variable1 = CDec(lblDisplay.Text)
    lblDisplay.Text = ""
    arithmeticProcess = "*"
End Sub

Private Sub btnDivide_Click(sender As System.Object, e As System.EventArgs) Handles btnDivide.Click
    variable1 = CDec(lblDisplay.Text)
    lblDisplay.Text = ""
    arithmeticProcess = "/"
End Sub

Private Sub btnEqual_Click(sender As System.Object, e As System.EventArgs) Handles btnEqual.Click
    variable2 = lblDisplay.Text
    If arithmeticProcess = "+" Then
        answerResult = variable1 + variable2
    ElseIf arithmeticProcess = "-" Then
        answerResult = variable1 - variable2
    ElseIf arithmeticProcess = "*" Then
        answerResult = variable1 * variable2
    Else
        answerResult = variable1 / variable2
    End If

    answerResult = Math.Round(answerResult, 9)
    Select Case answerResult
        Case Is > 4000000000
            MessageBox.Show("The answer is too large to be displayed.")
            variable1 = 0
            variable2 = 0
            lblDisplay.Text = ""
        Case Is < -4000000000
            MessageBox.Show("The answer is too small to be displayed.")
            variable1 = 0
            variable2 = 0
            lblDisplay.Text = ""
        Case Else
            lblDisplay.Text = CStr(answerResult)
    End Select


End Sub

首先,我需要礼貌地指出,我认为在继续这个程序时,您的逻辑会遇到问题,但弄清楚这一点是编程乐趣的一部分。您可能需要后退一步,绘制计算器应用程序的流程图,然后重新开始

现在,数字按钮0-9的代码是什么样子的,具体来说,您如何知道用户键入的是variable1还是variable2?假设您以“逻辑”的方式执行该操作,我会这样做:

将variable1设置为Decimal=0,为您的数字提供排序的“默认值”,并对variable2执行相同操作。 将代码从btnEqual_Click中取出并放入它自己的方法中,让我们称之为Public Sub DoMaths,然后简单地将DoMaths放入btnEqual_Click。。。。 对于每个“算术处理”按钮加、减、。。。在做了你已经做过的事情之后,你也要给DoMaths打电话。 现在是棘手的部分。您必须仔细跟踪在给定时间屏幕上显示的variableX

在DoMaths中,在执行计算后,需要将answerResult的值移动到variable1,并将variable2重置为零。我会把这个放在你案子的末尾

这将使您回到一种状态,如果用户刚刚输入了第一个数字变量1,并准备按下下一个算术运算符键,您将处于这种状态

编辑,以响应您的数字按钮代码:

首先,一个建议:txtNumber+=1实际上应该是txtNumber&=1。尽管也有其他参数,加号用于添加数字,而与号用于连接两个字符串

其次,为了实现您所希望的中间计算,您必须跟踪是否已使用Equals键执行了最终计算。我建议使用变量1来实现这一点。当任何加/减/等于/等时。。当按下按钮时,只要variable1为零,您就可以[通常]假设无需执行任何操作

用户输入一个数字,然后按一个算术键。将算术运算符存储为现有状态,并将数字移动到variable1。 现在,用户输入第二个数字,存储在variable2中,因为variable1不是零。 然后,用户有两个选项:1。按Equals键正常执行逻辑,或按另一个算术键继续计算。在第二种情况下,对两个变量执行操作,显示结果并将其存储在variable1中,然后清除variable2和arithmetricprocess的值。
现在,如果用户刚刚启动应用程序,并在计算中输入第一个数字,那么您基本上回到了原来的位置。您应该可以从此处正常继续。

如果lblDisplay.Text=0,则如果txtNumber=lblDisplay.Text=End,如果txtNumber.Contains,则lblDisplay.Text=End。然后,如果txtNumber.Length>10,则MessageBox.Showdisplay显示的数字不得超过10位。如果ElseIf txtNumber.Length>9,则退出子端,然后MessageBox.Showdisplay显示的数字不得超过10位。如果txtNumber+=1 lblDisplay.Text=txtnumberth这是我的按钮0-9的代码,则退出子端,但如何绘制应用程序的流程图?采取什么步骤来实现这一点。
Case Else
    lblDisplay.Text = CStr(answerResult)
    variable1 = answerResult
    variable2 = 0