java. Lang. numberformatexception: for input string: “23” [copy]
                                        
                    •
                    Java                                    
                See English answers > what is a numberformatexception and how can I fix it? 9
PS I tried to solve the "Chef and string problem" on codechef
Relevant codes:
Scanner cin=new Scanner(system.in);
      cin.useDelimiter("\n");
      String data=cin.next();
      System.out.println(data);
      /*
       * @param Q no. of chef's requests
       */
      String tempStr=cin.next();
      System.out.println(tempStr);;
      int Q = Integer.parseInt(tempStr);
Output:
sdfgsdg
sdfgsdg
23
23
Exception in thread "main" java.lang.NumberFormatException: For input string: "23
"
    at java.lang.NumberFormatException.forInputString(UnkNown Source)
    at java.lang.Integer.parseInt(UnkNown Source)
    at Chef.RegexTestHarness.main(RegexTestHarness.java:24)
Complete plan:
package Chef;
//
//TODO codechef constraints
import java.util.Scanner;
import java.lang.*;
import java.io.*;
//TODO RETURN TYPE
class RegexTestHarness
{
  public static void main(String args[])
  { 
      Scanner cin=new Scanner(system.in);
      cin.useDelimiter("\n");
      String data=cin.next();
      System.out.println(data);
      /*
       * @param Q no. of chef's requests
       */
      String tempStr=cin.next();
      System.out.println(tempStr);;
      int Q = Integer.parseInt(tempStr);
      for(int i=0; i<Q; i++)
      {
          /*
           * @param s chef's request
           */
           String s= cin.next();//request
//void getparam() (returning multiple parameters problem)
   //{a b L R
   //where a:start letter
   //b: end lettert
    //L: minStartIndex
    //L<=S[i]<=E[i]<=R
           //R is the maxEndIndex
//TODO transfer to main
    char a=s.charAt(0);
    char b=s.charAt(3);
    int L=0,R=0;
    /*
     * @param indexOfR in the request string s,we separate R (which is maxEndIndex of chef's
     * good string inside data string)
     * . To do that,we first need the index of R itself in request string s 
     */
    int indexOfR= s.indexOf(" ",5) +1;
    System.out.println("indexOfR is:" + s.indexOf(" ",5));
    L= Integer.parseInt( s.substring(5,indexOfR - 2) );
    //TODO check if R,L<10^6
    R=Integer.parseInt( s.substring(indexOfR) );
    //}  ( end getparam() )
  //-----------------------------------
    //Now we have a b L R
    //String good="";
    //TODO add other constraints (like L<si.....) here
    if(a !=b)
    {   int startInd=data.indexOf(a,L),endInd=data.lastIndexOf(b,R);
    int output=0,temp;
    while((startInd<endInd)&&(startInd != (-1) ) && ( endInd != (-1) ))
        {
          temp = endInd;
            while((startInd<endInd))
            {
            //good= good+ s.substring(startInd,endInd);
            output++;
            endInd=data.lastIndexOf(b,endInd);
            }
            startInd=data.indexOf(a,startInd);
            //TODO if i comment the line below,eclipse says tat the variable temp 
            //(declared at line 68) is not used. Whereas it is used at 68 
            //(and 83,the line below) 
            endInd=temp;
        }
    System.out.println(output);
    }
      }//end for
  cin.close();
  }
}
Solution
Your string has trailing spaces
int Q = Integer.parseInt(tempStr.trim());
                            The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
                        
                                            
                        THE END
                    
                    
                    
                                                        二维码
                        
                        
                                                
                        