VB .Net - 数组索引超出范围错误

时间:2014-06-24 08:24:08

标签: .net arrays vb.net exception string-concatenation

是VB.Net的新手。我被赋予了使用PowerSquareCubeInterface编写用户方法的任务。当我编译代码时,我收到错误:

Exception Caught: Array index is out of range

我不知道我在哪里弄错了。我刚刚开始学习VB.Net。

这是Interface的源代码:

Interface Calc
    Sub Square(ByVal number As Double)
    Sub Cube(ByVal number As Double)
    Sub Power(ByVal number As Double, ByVal raiseTo As Double)
End Interface

这是我实现上述接口的类的源代码:

Class Calculation
    Implements Calc

    Sub Square(ByVal number As Double) Implements Calc.Square
        Console.WriteLine("Square of " & number & " = " (number * number))
    End Sub

    Sub Cube(ByVal number As Double) Implements Calc.Cube
        Console.WriteLine("Power of " & number & " = " (number * number * number))
    End Sub

    Sub Power(ByVal number As Double, ByVal raiseTo As Double) Implements Calc.Power
        Console.WriteLine("Power of " & number & " = " (number ^ raiseTo))
    End Sub
End Class

这是主要方法:

Sub Main()
    Console.WriteLine(vbCrLf & vbTab & "********** Calculation Using Interface *********")

    Dim obj As Calculation = New Calculation()

    Try
        obj.Square(5.0)
        obj.Cube(5.0)
        obj.Power(5.0, 4.0)
    Catch ex As Exception
        Console.WriteLine(vbCrLf & "Exception Caught: " & ex.Message.ToString())
    End Try

    Console.WriteLine(vbCrLf & "Press any key to exit....")
    Console.ReadLine()
End Sub

2 个答案:

答案 0 :(得分:1)

在您的输出中,您正在连接一个字符串,但是您在连接中错过了&

这一行:

Console.WriteLine("Square of " & number & " = " (number * number))

应该是:

Console.WriteLine("Square of " & number & " = " & (number * number))

错误消息是(我认为),因为编译器评估" = "作为字符串数组并尝试返回它的(number * number)元素。请考虑以下事项:

Console.WriteLine((New String("foo"))(1)) 'this fails

作为旁注,您应该切换Option Strict OnSee here for reasons why。这不会解决您的问题,但在您修复此问题之前,它不会允许代码编译。

在部署应用程序之前花时间修复编译时错误比尝试远程调试运行时错误要好得多。

答案 1 :(得分:0)

试试这个

Public Class Calculation
Implements CalcIFace
Sub Square(ByVal number As Double) Implements CalcIFace.Square
    Console.WriteLine("Square of " & number & " = " & number * number & "")
End Sub
Sub Cube(ByVal number As Double) Implements CalcIFace.Cube
    Console.WriteLine("Power of " & number & " = " & number * number * number & "")
End Sub
Sub Power(ByVal number As Double, ByVal raiseTo As Double) Implements CalcIFace.Power
    Console.WriteLine("Power of " & number & " = " & number ^ raiseTo & "")
End Sub
End Class
  • 在OP的方法中,连接错误

  • OP做了Console.WriteLine("Square of " & number & " = " (number * number)),这应该像Console.WriteLine("Square of " & number & " = " & (number * number))一样正确连接