Vb.net 为什么我的阵列超出范围? 选项严格打开 选项显式打开 模块1 副标题() 整数有多少 Dim nameArray(多少个)作为字符串 Dim HourlyWageArray(多少)为双精度 Dim HoursWorkedArray(多少)为整数 Dim GrossPayArray(多少)作为双倍 尺寸x为整数=0 Console.WriteLine(“有多少员工?”) 多少个=CInt(Console.ReadLine()) 当x

Vb.net 为什么我的阵列超出范围? 选项严格打开 选项显式打开 模块1 副标题() 整数有多少 Dim nameArray(多少个)作为字符串 Dim HourlyWageArray(多少)为双精度 Dim HoursWorkedArray(多少)为整数 Dim GrossPayArray(多少)作为双倍 尺寸x为整数=0 Console.WriteLine(“有多少员工?”) 多少个=CInt(Console.ReadLine()) 当x,vb.net,Vb.net,在第17行,nameArray(x)=CStr(Console.ReadLine()),我收到一个错误“发生了类型为'System.IndexOutOfRangeException'的未处理异常” 无论我为多少输入什么值,在尝试输入第二个员工姓名时都会发生此错误 您正在定义声明数组后的数量。nameArray是在第三行定义的,当Howmount可能是0时,所以nameArray将有零个条目。在定义nameArray之前,您应该先从控制台中读取数量。考虑一下:y=2;z=x+y;x=1为什么不起作

在第17行,nameArray(x)=CStr(Console.ReadLine()),我收到一个错误“发生了类型为'System.IndexOutOfRangeException'的未处理异常”


无论我为多少输入什么值,在尝试输入第二个员工姓名时都会发生此错误

您正在定义声明数组后的数量。nameArray是在第三行定义的,当Howmount可能是0时,所以nameArray将有零个条目。在定义nameArray之前,您应该先从控制台中读取数量。

考虑一下:
y=2;z=x+y;x=1为什么不起作用?因为x还没有被声明…但是我不能把x=0放入循环中,可以吗?是的,所以你在这里遇到了同样的事情。
HowMany
默认为0,然后在赋值之前使用它。非常感谢。另外一个不相关的问题是,如何正确打印结果。是否在最后一个ConsoleWite的数组名称后插入(x)?
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