VB上的Celsius转换器运行严格选项错误

时间:2014-09-30 07:02:24

标签: vb.net visual-studio-2012

我希望有人可以澄清我在这里做错了什么。我正在尝试制作一个带有2个标签的表格 - 摄氏和华氏,2个相应的教科书,用于数值和1个按钮 - 转换显示摄氏度到华氏度的转换。我使用的以下代码一直让我遇到Strict Options错误,2对于Option Strict On禁止来自' Object'的隐式转换。到' String'和Option Strict On 2禁止从' String'隐式转换到' Double'我似乎无法找到满足严格选择的方法。

 Private Sub btnConvert_Click(sender As Object, e As EventArgs) Handles btnConvert.Click
    Dim celsius As String
    Dim answer As String
    Dim fahrenheit As String

    celsius = txtCelsius.Text
    fahrenheit = txtFahrenheit.Text

    If String.IsNullOrEmpty(txtFahrenheit.Text) Then
        answer = celsius * 9 / 5 + 32
        txtFahrenheit.Text = Int(answer)
    End If
    If String.IsNullOrEmpty(txtCelsius.Text) Then
        answer = (fahrenheit - 32) * 5 / 9
        txtCelsius.Text = Int(answer)

2 个答案:

答案 0 :(得分:0)

您有许多可以修复/明确的隐式转换:

您在celsius * 9 / 5 + 32(fahrenheit - 32) * 5 / 9中进行了隐式转换。 celciusfarhenheit是字符串,但您将其用作数字。

当您将结果放入答案时,您也有: answer = celsius * 9 / 5 + 32
answer是一个字符串,但您要分配计算结果。它应该是一个双重或类似的数据类型而不是字符串。

然后将Int(answer)放入文本字​​段。 第一个answer仍然是一个字符串,但如果我没记错的话Int()需要一个数字(双精度)。然后你获取结果并自动放入一个字符串: txtCelsius.Text = Int(answer)

答案 1 :(得分:0)

使用 Option Strict On

您需要自己进行转换

我已编辑过你的代码,试试这个

        Dim celsius As String
        Dim answer As String
        Dim fahrenheit As String

        celsius = txtCelsius.Text
        fahrenheit = txtFahrenheit.Text

        If String.IsNullOrEmpty(txtFahrenheit.Text) Then
            answer = CStr(CDbl(celsius) * 9 / 5 + 32)
            txtFahrenheit.Text = answer
        End If
        If String.IsNullOrEmpty(txtCelsius.Text) Then
            answer = CStr((CDbl(fahrenheit) - 32) * 5 / 9)
            txtCelsius.Text = answer
        End If