user2018083
user2018083

Reputation: 63

check the particular array index present or not

i am getting following error

java.lang.ArrayIndexOutOfBoundsException: 6
    at data.connect(data.java:282)
    at data.<init>(data.java:78)
    at data.main(data.java:549)

In 282 line I am accessing

int g = Integer.parseInt(arrtime[tempreload])

arrtime is a String[] and I did checking using array length:

int arrtimelen = arrtime.length - 1;
if(Integer.parseInt(arrtime[tempreload]) < arrtimelen) {
    g = Integer.parseInt(arrtime[tempreload]);
}

my program flow is

int arrpagenolen=(arrpageno.length)-1; int arrtimelen=(arrtime.length)-1;

                String finalarr[][]=new String[3000000][5];
                int tempreload=0;

                int totalreload=0;
                /*System.out.println("Length="+arrpagenolen);
                for(int s=0;s<arrpagenolen;s++)
                {
                    System.out.println(s+"="+arrpageno[s]);
                }*/
                for(int n=0;n<arrpagenolen;n++)
                {
                        if(n==0)
                        {
                            totalreload=Integer.parseInt(arrreload[n]);
                            if(totalreload==1)
                            {
                                finalarr[finalvalue][1]=arrpageno[n];
                                finalarr[finalvalue][2]=arrreload[n];
                                finalarr[finalvalue][3]=arrtime[tempreload];
                                finalarr[finalvalue][4]=arrreferal[n];

                            }else
                            {
                                for(int y=0;y<totalreload;y++)
                                {
                                    //System.out.println(finalarr[finalvalue][3]);
                                    if(finalarr[finalvalue][3]!=null)
                                    {
                                        int x=Integer.parseInt(finalarr[finalvalue][3]);
                                        int g;
                                        if(Integer.parseInt(arrtime[tempreload]) < arrtimelen)
                                        {
                                         g=Integer.parseInt(arrtime[tempreload]);
                                        }
                                        else
                                        {
                                        g=0;
                                        }
                                        int temp=x+g;
                                        finalarr[finalvalue][3]=Integer.toString(temp);
                                    }else
                                    {
                                        if(Integer.parseInt(arrtime[tempreload]) < arrtimelen)
                                        {
                                        finalarr[finalvalue][3]=arrtime[tempreload];
                                        }else
                                        {
                                        int tmprl=0;
                                        arrtime[tempreload]=Integer.toString(tmprl);
                                        }                                       
                                    }
                                    tempreload++;
                                }
                                finalarr[finalvalue][1]=arrpageno[n];
                                finalarr[finalvalue][2]=arrreload[n];
                                finalarr[finalvalue][4]=arrreferal[n];

                            }
                            finalvalue++;

                        }
                        else
                        {
                            int flag=0;
                            int selectedindex=0;
                            for(int j=0;j<finalvalue;j++)
                            {
                                 int temp1=Integer.parseInt(finalarr[j][1]);
                                 int temp2=Integer.parseInt(arrpageno[n]);
                                if(temp1==temp2)
                                {
                                    flag=1;
                                    selectedindex=j;
                                }
                            }

                            if(flag==0)
                            {
                                totalreload=Integer.parseInt(arrreload[n]);
                                if(totalreload==1)
                                {

                                    finalarr[finalvalue][1]=arrpageno[n];
                                    finalarr[finalvalue][2]=arrreload[n];
                                    finalarr[finalvalue][3]=arrtime[tempreload];
                                    finalarr[finalvalue][4]=arrreferal[n];
                                }
                                else
                                {
                                    for(int y=0;y<totalreload;y++)
                                    {
                                        if(finalarr[finalvalue][3]!=null)
                                        {
                                            int x=Integer.parseInt(finalarr[finalvalue][3]);
                                            int g=Integer.parseInt(arrtime[tempreload]);
                                            System.out.println("g value="+g);
                                            int temp3=x+g;
                                            System.out.println("temp3 value="+temp3);
                                            finalarr[finalvalue][3]=Integer.toString(temp3);
                                        }else
                                        {
                                            finalarr[finalvalue][3]=arrtime[tempreload];
                                        }
                                        //finalarr[finalvalue][3]=finalarr[finalvalue][3]+arrtime[tempreload];
                                        tempreload++;
                                    }

                                    finalarr[finalvalue][1]=arrpageno[n];
                                    finalarr[finalvalue][2]=arrreload[n];
                                    finalarr[finalvalue][4]=arrreferal[n];
                                }   
                                finalvalue++;
                            }   
                            else
                            {
                                totalreload=Integer.parseInt(arrreload[n]);
                                if(totalreload==1)
                                {
                                    int x=Integer.parseInt(finalarr[selectedindex][2]);
                                    int g=Integer.parseInt(arrreload[n]);
                                    int temp4=x+g;
                                    finalarr[selectedindex][2]=Integer.toString(temp4);

                                    int a=Integer.parseInt(finalarr[selectedindex][3]);
                                    //System.out.println("reload 1 previous value "+a);
                                    int b=Integer.parseInt(arrtime[tempreload]);
                                    //System.out.println("reload 1 new value "+b);
                                    int temp5=a+b;
                                    //System.out.println("reload 1 temp value "+temp5);
                                    finalarr[selectedindex][3]=Integer.toString(temp5);


                                }
                                else            
                                {
                                    for(int y=0;y<totalreload;y++)
                                    {

                                            int x=Integer.parseInt(finalarr[selectedindex][3]);
                                            //System.out.println("else previous value "+x);
                                            int g;
                                            if(arrtime[tempreload]!=null)
                                            {
                                             g=Integer.parseInt(arrtime[tempreload]);
                                            }
                                            //System.out.println("else new value "+g);
                                            else
                                            {
                                            g=0;
                                            }
                                            int temp6 = x+g;
                                            //System.out.println("else temp value "+temp6);
                                            finalarr[selectedindex][3]=Integer.toString(temp6);
                                            tempreload++;
                                    }
                                    int p=Integer.parseInt(finalarr[selectedindex][2]);
                                    int q=Integer.parseInt(arrreload[n]);
                                    int temp7=p+q;
                                    finalarr[selectedindex][2]=Integer.toString(temp7);


                                }
                            }
                        }
                }

What am I doing wrong?

Upvotes: 1

Views: 105

Answers (2)

JB Nizet
JB Nizet

Reputation: 691755

You can only access the element at index tempreload if tempreload is greater than or equal to 0 and less than the length of the aray. So check that:

if (tempreload >= 0 && tempreload < arrtime.length) {
    int g = Integer.parseInt(arrtime[tempreload])
    ...

That said, unless tempreload is a value entered by the end user, if it doesn't satisfy these conditions, it means that there is a bug before in your program. Make sure to fix the cause of the bug, and not its symptom.

Upvotes: 0

Mikhail Vladimirov
Mikhail Vladimirov

Reputation: 13890

You are checking array element value, not index. Should probably be:

int arrtimelen = arrtime.length;
if (tempreload < arrtimelen)                                           
{                                            
    g = Integer.parseInt (arrtime [tempreload]);
}

Upvotes: 5

Related Questions