Tôi đã viết một số mã cho một thách thức interviewstreet.com Mã của tôi đưa ra một NumberFormatExceptionBắt một 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);
}
}
}
}
Đây là trường hợp thử nghiệm mà họ sử dụng
3
1
2
3
Output:
poor conductor
1 W L
1 A L
Dường như có một dấu cách hoặc thứ gì đó ở cuối mỗi dòng gây ra ngoại lệ.
$ 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)
Điều này đã mất nửa giờ và tôi không biết cách khắc phục điều này. Tiêu diệt niềm vui của sự kiện. Ai đó có thể cho tôi biết tôi đang làm gì sai.
nếu nó một không gian dấu, chỉ cần cắt nó ... sử dụng trim() ... –
Cố gắng sử dụng lớp Scanner thay vì cũng đã làm một số đập đầu tôi chống lại một Tường. – nikhil
Nửa giờ không phải là nhiều thực sự :) – mbatchkarov