How to resolve NumberFormatException : for input string error?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • joseplta5
    New Member
    • Apr 2012
    • 1

    How to resolve NumberFormatException : for input string error?

    This is a part of my code, where Im trying to generate a few patterns, Now Im getting an error saying :
    Exception in thread "main" java.lang.Numbe rFormatExceptio n: For input string: "C2"
    at java.lang.Numbe rFormatExceptio n.forInputStrin g(NumberFormatE xception.java:4 8)
    at java.lang.Integ er.parseInt(Int eger.java:449)
    at java.lang.Integ er.valueOf(Inte ger.java:554)
    at nprf.offline.Pa tternGenerator. doGeneratePatte rn(PatternGener ator.java:77)
    at nprf.offline.Pa tternGenerator. main(PatternGen erator.java:23)

    The error is occuring in these two lines [edit: 50 and 51] as shown below:
    int a= Integer.valueOf (Fe[i][k].substring(1,Fe[i][k].indexOf(','))) ;
    int b= Integer.valueOf (Fe[j][k].substring(1,Fe[j][k].indexOf(','))) ;

    Fe[][] is an array which is declared as String [][] Fe=new String[500][77];

    Code:
    public void doGeneratePattern() throws Exception 
        {
            String sql; 
            ResultSet rs;
                 
            // STEP NO 8
            int i=0;
            int ptr=0;
          
            findF1();
          
            //STEP NO 10
            e=2;
            while (true) 
            {
                // Flush support of size MAX_CA
                for(int a=0;a<MAX_CA;a++)
                    Support[a]=0;
               
                // Flush  CAe
                for(int a=0;a<MAX_CA;a++)
                    for(int b=0;b<Auxiliary.MAX_ITERATION;b++) 
                        CAe[a][b]=null;
                              
                ptr=0;
                int j;
                for (i=0;i<nFe;i++) 
                {
                    for (j=i+1;j<nFe;j++) 
                    {
                        boolean flag=false;
                        for (int k=0;k<e-2;k++) 
                        {
                            if (Fe[i][k].equals(Fe[j][k]))
                                continue;
                            else 
                            {
                                flag=true;
                                break;
                            }
                        }
                        int k;
                        if (flag==false) // (k-2) items matched
                        {
                            for (k=0;k<e-2;k++)
                                CAe[ptr][k]=Fe[i][k];
    
                         //   Double a=  Double.parseDouble(Fe[i][k].substring(1,Fe[i][k].indexOf(',')));
                         //   Double b=  Double.parseDouble(Fe[j][k].substring(1,Fe[j][k].indexOf(',')));
                           int a=  Integer.valueOf(Fe[i][k].substring(1,Fe[i][k].indexOf(',')));
                           int b=  Integer.valueOf(Fe[j][k].substring(1,Fe[j][k].indexOf(',')));
                        //  System.out.println("value of a and b"+a +b);
                            if(e!=2 || a==1)
                                if (a<b)
                                {
                                    CAe[ptr][k]=Fe[i][k];
                                    CAe[ptr][k+1]=Fe[j][k];
                                    ptr++;
                                }
                        }
                        else
                            continue;
                    }
                }
                nCAe=ptr;
                for (int k=0;k<nCAe;k++) 
                {
                    sql="select * from navigationtransaction";
                    rs=Auxiliary.stmt.executeQuery(sql);
                    while (rs.next()) 
                    {
                        String itemString=rs.getString(2);
                        boolean flag=false;
                        for(int l=0;l<e;l++)
                        {
                            if(itemString.contains(CAe[k][l])==true) 
                                continue;
                            else 
                                flag=true;
                        }
                        if(flag==false)
                            Support[k]++;
                    }
                }
                int m=0;
                for (int k=0;k<nCAe;k++) 
                {
                    if (Support[k]>=Auxiliary.minSupport) 
                    {
                        for (j=0;j<e;j++)
                            Fe[m][j]=CAe[k][j];
                        m++;
                    }
                }
                nFe=m;
                for (int k=0;k<nFe;k++) 
                {
                    for (j=0;j<e;j++) 
                        NP[nNP][j]=Fe[k][j];
                    nNP++;
                }
                e=e+1;      
                if(nFe==0) 
                    break;
            }      
        }
    Last edited by Stewart Ross; Apr 14 '12, 12:23 PM. Reason: Added code tags and moved your explanation to the top of the question
  • Rabbit
    Recognized Expert MVP
    • Jan 2007
    • 12517

    #2
    The substring you're returning includes the comma.

    Comment

    Working...