需要Visual Basic中的面积计算器帮助



我需要一些关于矩形计算器代码的帮助。。。所以我做了一个矩形面积计算器,它有长度、宽度、面积、矩形数和最小矩形。。。我还创建了一个catch-bock,用于处理无效的强制转换提取,其中2个。。。当结果的值大于100万时,也是一个a期望类。。。这是我的代码

Public Class Form1
Dim area As Decimal
Dim numberofRectangles As Integer
Dim smallestRectangle As Decimal 
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Try
Dim length As Decimal = CDec(txtLength.Text)
Dim width As Decimal = CDec(txtWidth.Text)
Dim Area As Decimal = width * length
Dim numberofRectangles As Integer = numberofRectangles + 1
Dim smallestRectangle As Decimal = Math.Min(smallestRectangle, Area)
txtArea.Text = Area.ToString("n2")
txtNumberOfRectangles.Text = numberofRectangles.ToString
txtSmallestRectangle.Text = smallestRectangle.ToString("n2")
txtLength.Select()
Catch ex As InvalidCastException
MessageBox.Show("Please check entries for valid numeric data",
ex.GetType.ToString)
Catch ex As OverflowException
MessageBox.Show("Please check to make sure entries aren't too large.",
ex.GetType.ToString)
Catch ex As Exception
MessageBox.Show(ex.Message & vbNewLine & vbNewLine & ex.StackTrace,
ex.GetType.ToString)
If area < 1000000000 Then
Throw New FormatException("The rectangle Is too large!")
Return
End If
Finally
End Try
End Sub

首先,我有一个错误,我的最小矩形是999999999,00,而对于预期,当结果的值大于100万时,我有问题,正如你可能从代码中看到的那样。寻找一些关于我的代码的建议

编辑:修复顶部现在在最小的矩形框中获得0.00

我应该使用我吗?在这里也输入一些

您拼错了smallestRecntangle——这就是您需要重新声明它的原因——它与类变量smallestRectangle不同。因此,您永远不会将smallestRectangle设置为999999999以外的任何值。此外,您可以使用一个名为Decimal.MaxValue的值来执行与999999999相同的操作,但使用实际的最大可能小数。但是,我建议您使用Decimal?,并在最初指定为null。在代码中;如果smallestRectangle为null,则设置smallest矩形,否则将其设置为smallest长方形和面积的最小值"。

异常处理是针对您无法控制的意外错误。我们可以测试用户输入,因此不需要异常处理。

ex.GetType.ToString

这没有道理。如果要显示Exception消息,可以使用和与&ex.Message进行符号组合。ex.ToString通常提供比您希望用户看到的更多的信息。

TryParse将检查第一个参数中提供的字符串是否可以转换。返回TrueFalse。如果True,它将把转换后的字符串分配给第二个参数。

numberofRectangles += 1

是编写的快捷方式

numberofRectangle = numberofRectangles + 1

唯一可能引发异常的代码行是面积计算,因此我们将Try块限制在该行。

您的主要问题是对Sub中的numberofRectanglessmallestRectangle使用Dim语句。这些变量在End Sub处的值松动。它们只存在于Sub内部。尽管Dim具有与Private相同的含义,用于声明Class级变容,但是Private是优选的。CCD_ 24用于方法中的局部变量。

为了避免最小矩形总是为零的问题,我检查了计数,并将smallestRectangle设置为第一个矩形区域。之后Math.Min接管。

Private numberofRectangles As Integer
Private smallestRectangle As Decimal
Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
Dim length As Decimal
Dim width As Decimal
If Not Decimal.TryParse(txtLength.Text, length) Then
MessageBox.Show("Please check entries for valid numeric data")
Exit Sub
End If
If Not Decimal.TryParse(txtWidth.Text, width) Then
MessageBox.Show("Please check entries for valid numeric data")
Exit Sub
End If
Dim Area As Decimal
Try
Area = width * length
Catch ex As OverflowException
MessageBox.Show("Please check to make sure entries aren't too large." &
ex.Message)
Exit Sub
Catch ex As Exception
MessageBox.Show(ex.Message)
Exit Sub
End Try
numberofRectangles += 1
If numberofRectangles < 2 Then
smallestRectangle = Area
Else
smallestRectangle = Math.Min(smallestRectangle, Area)
End If
txtArea.Text = area.ToString("n2")
txtNumberOfRectangles.Text = numberofRectangles.ToString
txtSmallestRectangle.Text = smallestRectangle.ToString("n2")
txtLength.Select()
End Sub

相关内容

  • 没有找到相关文章

最新更新