线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:我的Java程序中出现0错误

时间:2016-10-14 04:06:42

标签: arrays loops

我制作了这个示例程序一段时间了,我正在弄清楚如何添加我在数组中输入的两个员工的工资总和。有什么建议吗?

import javax.swing.JOptionPane;
public class Sample {
public static void main (String[] args)

{
    String Name;
    int i, HoursWorked, Rate, Pay=0, TotalPay=0, GrandTotalPay=0;
    int CivStatus=0, Single=500, Married=1000;

    System.out.println("Name\t\t\t\tCivil Status Code\t\t\tPay");

    int [] Employees = new int [2];
    for (i=0; i<Employees.length; i++)
    {
        Name=JOptionPane.showInputDialog("Enter your name: ");
        HoursWorked=Integer.parseInt(JOptionPane.showInputDialog("Enter hours worked: "));
        Rate=Integer.parseInt(JOptionPane.showInputDialog("Enter hourly rate: "));
        Pay=HoursWorked*Rate;
        CivStatus=Integer.parseInt(JOptionPane.showInputDialog("Enter your civil status: \nEnter [1] if single.\nEnter [2] if married."));

        if(CivStatus==1){
            {
                TotalPay=Pay-Single;
            } 
        }
        if(CivStatus==2){
            {
                TotalPay=Pay-Married;
            }
        }
        GrandTotalPay=Employees[0]+Employees[1];
        System.out.println(Name+"\t\t\t\t"+CivStatus+"\t\t\t\t\t"+Pay);
    }
    System.out.println("The sum of the pay is: "+GrandTotalPay);
    }
}

4 个答案:

答案 0 :(得分:1)

数组索引当您尝试访问阵列中不存在的内存位置时,会发生超出范围的异常。 你在

做同样的事情
for (i=0; i<Employees.length; i++)

相反,做

apply plugin: 'com.google.gms.google-services'

答案 1 :(得分:1)

计算每笔付款后,将其添加到TotalPay。 像:

TotalPay = TotalPay + Pay;

或者,

TotalPay += Pay;

接下来,你实际上并没有在这里使用数组。如果要将Pays保留在数组中,则需要一个大小为2的数组。

int[] Employees = new int[2];

另一件事,当遍历一个数组时,这样做:

for(i = 0; i < Employees.Length; i++) {}

数组索引从0开始,然后上升到(size - 1),所以你不能在这里使用&lt; = Employees.Length。

答案 2 :(得分:0)

数组索引从0开始。如果要遍历所有元素,请使用从0到length的索引。 i<=Employees.Length更改为i<Employees.Length

答案 3 :(得分:0)

检查以下代码并进行更改。注意:将Pay更改为数组以保留每位员工的工资

import javax.swing.JOptionPane;
public class Sample {
public static void main (String[] args)
{
    String Name;
    int i, HoursWorked, Rate, TotalPay=0, GrandTotalPay=0;
    int CivStatus=0, Single=500, Married=1000;

System.out.println("Name\t\t\t\tCivil Status Code\t\t\tPay");
int [] Pay = new int [2];
int [] Employees = new int [2];
for (i=0; i<Employees.length; i++)
{
    Name=JOptionPane.showInputDialog("Enter your name: ");
    HoursWorked=Integer.parseInt(JOptionPane.showInputDialog("Enter hours worked: "));
    Rate=Integer.parseInt(JOptionPane.showInputDialog("Enter hourly rate: "));
    Pay[i]=HoursWorked*Rate;
    CivStatus=Integer.parseInt(JOptionPane.showInputDialog("Enter your civil status: \nEnter [1] if single.\nEnter [2] if married."));

    if(CivStatus==1){
        {
            TotalPay=Pay[i]-Single;
        } 
    }
    if(CivStatus==2){
        {
            TotalPay=Pay[i]-Married;
        }
    }
    GrandTotalPay+=Pay[i];
    System.out.println(Name+"\t\t\t\t"+CivStatus+"\t\t\t\t\t"+Pay[i]);
}
System.out.println("The sum of the pay is: "+GrandTotalPay);
    }
}

感谢。