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);
}
}
答案 0 :(得分:3)
假设用户键入X
并在第一个问题上按Enter键,然后键入123
并在第二个问题上按Enter键,这意味着输入流包含以下字符:
X <CR> 1 2 3 <CR>
当您致电read()
时,您只能阅读X
。当您再调用readLine()
时,您会阅读<CR>
并返回空白字符串。
1 2 3 <CR>
仍然未读入输入流。
解决方案:在阅读readLine()
之后致电X
以跳过其余部分,或使用readLine()
阅读X
作为String
,而不是char
。
仅供参考:这是人们在使用Scanner
并将nextLine()
与来自nextXxx()
方法的调用混合调用时遇到的完全相同的问题,例如nextInt()
。
答案 1 :(得分:0)
改变这个:
long l=Integer.parseInt(br.readLine());
到:
long l=Long.parseLong(br.readLine(), 10);
这是因为您正在尝试将String转换为Long而不是Integer类型。