VB:这个程序为什么会出现“溢出”错误?

来源:百度知道 编辑:UC知道 时间:2024/05/26 17:11:04
Private Sub Form_click()
Dim A(3, 3) As Integer, I As Integer, J As Integer, Ji As Long, Max As Long, K As Integer, L As Integer
A(1, 1) = 45: A(1, 2) = 67: A(1, 3) = 89: A(2, 1) = 23: A(2, 2) = 54: A(2, 3) = 99: A(3, 1) = 89: A(3, 2) = 59: A(3, 3) = 29
For I = 1 To 3
For J = 1 To 3
Print A(I, J);
Next J
Print
Next I

For I = 1 To 3
For J = 1 To 3
If I <> J Then
Ji = A(1, I) * A(2, J) * A(3, 6 - I - J)

If Ji > Max Then
Max = Ji
K = I: L = J
End If
End If
Next J
Next I

Print A(1, K); "*"; A(2, J); "*"; A(3, 6 - I - J); "="; Max

End Sub

Private Sub Form_click()
Dim A(3, 3) As Integer, I As Integer, J As Integer, Ji As Long, Max As Long, K As Integer, L As Integer
A(1, 1) = 45: A(1, 2) = 67: A(1, 3) = 89: A(2, 1) = 23: A(2, 2) = 54: A(2, 3) = 99: A(3, 1) = 89: A(3, 2) = 59: A(3, 3) = 29
For I = 1 To 3
For J = 1 To 3
Print A(I, J);
Next J
Print
Next I

For I = 0 To 2
For J = 0 To 2
If I <> J Then
Ji = A(0, I) * A(1, J) * A(2, (3 - I - J))

If Ji > Max Then
Max = Ji
K = I: L = J
End If
End If
Next J
Next I

Print A(0, K); "*"; A(1, J); "*"; A(2, 6 - I - J); "="; Max

End Sub

你定义了数组是3*3的,第一个元素应是A(0,0)最后一个是A(2,2)

Ji = A(1, I) * A(2, J) * A(3, 6 - I - J)

因为右面数据都是Integer,所以运算时候按照Integer去处理,可以乘以一个Long型数据1

Ji = A(1, I) * A(2, J) * A(3, 6 - I - J) * 1&

你最下面还有个越界错误,按照题意自行修改