获取NumberFormatException

nik*_*hil 5 java numberformatexception

我正在为interviewstreet.com挑战编写一些代码我的代码给出了NumberFormatException

import java.io.*;

public class BlindPassenger
{
  public static void main(String [] args) throws IOException
  {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String line = br.readLine();
    int t,n;
    //System.out.println(line);
    t = Integer.parseInt(line);
    for(int i=0;i<t;++i)
    {
      line = br.readLine();
      n = Integer.parseInt(line); --n;
      if(n == 0)
      {
        System.out.println("poor conductor");
      }
      else
      {
        char direction='l',seat_posn='l';
        int row_no = 0, relative_seat_no = 0;
        row_no = (int) Math.ceil(n/5.0);
        relative_seat_no = n % 5;
        if(row_no % 2 == 0)
        {
          //even row, need to reverse the relative seat no
          relative_seat_no = 6 - relative_seat_no;
        }

        if(relative_seat_no < 3)
        {
          direction = 'L';
          if(relative_seat_no == 1) seat_posn = 'W';
          else seat_posn = 'A';
        }
        else
        {
          direction = 'R';
          if(relative_seat_no == 3) seat_posn = 'A';
          else if(relative_seat_no == 4) seat_posn = 'M';
          else seat_posn = 'W';
        }

        System.out.println(row_no + " " + seat_posn + " " + direction);
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这是他们使用的测试用例

3 
1 
2 
3 

Output: 
poor conductor 
1 W L 
1 A L
Run Code Online (Sandbox Code Playgroud)

在每行的末尾似乎有一个尾随空格或某些东西导致异常.

$ java BlindPassenger <input00.txt
Exception in thread "main" java.lang.NumberFormatException: For input string: "3
 "
        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:65)
        at java.lang.Integer.parseInt(Integer.java:492)
        at java.lang.Integer.parseInt(Integer.java:527)
        at BlindPassenger.main(BlindPassenger.java:11)
Run Code Online (Sandbox Code Playgroud)

这花了半个小时,我不知道如何解决这个问题.杀死事件的乐趣不是吗.有人能告诉我我做错了什么.

Mar*_*ers 14

Integer.parseInt()你已经发现,无法处理不符合预期格式的字符串.trim()在解析之前你可以使用字符串:

t = Integer.parseInt(line.trim());
Run Code Online (Sandbox Code Playgroud)

这摆脱了前导和尾随空格.

  • @nikhil:这是一个不正确的印象,[文件为`parseInt`](http://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.字符串))明确说明:*字符串中的字符必须都是十进制数字,除了第一个数字...*方法规范总是比你最好的猜测更具权威性.Google应该是您的第一或第二资源. (3认同)