2014-10-05 46 views
0
Option Strict On 
Option Explicit On 
Module Module1 
Sub Main() 
    Dim HowMany As Integer 
    Dim nameArray(HowMany) As String 
    Dim HourlyWageArray(HowMany) As Double 
    Dim HoursWorkedArray(HowMany) As Integer 
    Dim GrossPayArray(HowMany) As Double 
    Dim x As Integer = 0 

    Console.WriteLine("How many employees?") 
    HowMany = CInt(Console.ReadLine()) 

    Do While x < HowMany 
     Console.WriteLine("Employee name: ") 
     nameArray(x) = CStr(Console.ReadLine()) 
     Console.WriteLine("Hourly rate: ") 
     HourlyWageArray(x) = CDbl(Console.ReadLine()) 
     Console.WriteLine("Hours worked: ") 
     HoursWorkedArray(x) = CInt(Console.ReadLine()) 
     If HoursWorkedArray(x) <= 40 Then 
      GrossPayArray(x) = HourlyWageArray(x) * HoursWorkedArray(x) 
     ElseIf HoursWorkedArray(x) > 40 Then 
      GrossPayArray(x) = ((HoursWorkedArray(x) - 40) * (HourlyWageArray(x) * 1.5)) + (40 * HourlyWageArray(x)) 
     End If 
     x = x + 1 
    Loop 
    Console.WriteLine("{0,12:c} {1,12} {2,12:c} {3,12:c}", nameArray, HourlyWageArray, HoursWorkedArray, GrossPayArray) 


    Console.ReadLine() 

End Sub 

End Module 

在第17行,nameArray(x)= CStr的(到Console.ReadLine()),收到错误 “类型的未处理的异常 'System.IndexOutOfRangeException' 发生”为什么我的数组超出范围?

无论什么值I输入对于HowMany,尝试输入第二个员工姓名时发生此错误。

+0

想想这个: 'y = 2; z = x + y; x = 1;'为什么不行? – 2014-10-05 03:42:54

+0

因为x还没有被声明......但是我不能把x = 0放到循环里面吗? – 2014-10-05 03:44:10

+0

是的,所以你在这里遇到了同样的事情。 'HowMany'默认为0,然后在分配值之前使用它。 – 2014-10-05 03:47:18

回答

2

您在声明阵列后正在定义HowMany。 nameArray在第三行定义,当HowMany可能为0时,nameArray将有零个条目。在定义nameArray之前,您应该从控制台读取HowMany。

+0

非常感谢。另一个无关的问题是,我如何才能正确打印结果。在我的最后一个ConsoleWite的数组名后插入(x)? – 2014-10-05 03:46:59

相关问题