java.lang.NumberFormatException : For input string: "23 " 异常

标签 java string numberformatexception parseint

<分区>

我给了 23(看起来像一个正确的字符串)作为输入,但仍然得到 NumberFormatException。请指出我哪里做错了。

PS 我试图解决 codechef 上的“厨师和字符串问题”

相关代码:

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);

输出:

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)

完整程序:

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();
  }


}

最佳答案

您的字符串有尾随空格。

int Q = Integer.parseInt(tempStr.trim());

关于java.lang.NumberFormatException : For input string: "23 " 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586430/

相关文章:

java在bintree中递归父搜索

Java泛型使用难度

python - “元组”对象没有属性 'replace'

java - 对 java String 的结果感到困惑

java - 减少字母的值,例如可以将 'd' 更改为 'c' ,但不能将 'c' 更改为 'd' 。为了形成回文

java.lang.NumberFormatException : null i 异常

java - 空值或空字符串

java - 如何引用子类作为类型参数?

c++ - 是否自动插入空字符?

java - 检查 JTextField 是否为空时出现 NumberFormatException 错误