public class Pack1 {
public static void main(String ar[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter the character");
char c=(char)br.read();
System.out.println(c);
System.out.println("enter the integer");
long l=Integer.parseInt(br.readLine());
System.out.println("long l="+l);
System.out.println(c);
}
}
假设用户键入 X
并在第一个问题上按 Enter 键,然后键入 123
并在第二个问题上按 Enter 键,这意味着输入流包含以下字符:
X <CR> 1 2 3 <CR>
当您调用read()
时,您只读取X
。然后调用 readLine()
时,您读取<CR>
并返回一个空白字符串。
1 2 3 <CR>
在输入流中仍处于未读状态。
解决方案:在读取X
后调用readLine()
以跳过该行的其余部分,或使用readLine()
将X
作为String
而不是char
读取。
仅供参考:这与人们在使用Scanner
并将对nextLine()
的调用与其他nextXxx()
方法(如nextInt()
)的调用混合时一直遇到的问题完全相同。
更改以下内容:
long l=Integer.parseInt(br.readLine());
自:
long l=Long.parseLong(br.readLine(), 10);
这是因为您尝试将字符串转换为长整型而不是整数类型。