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>在输入流中仍处于未读状态。

解决方案:读取readLine()后调用X跳过该行的其余部分,或使用readLine()X读取为String,而不是char

仅供参考:这是人们在使用Scanner并将对nextLine()的调用与对其他nextXxx()方法(如nextInt())的调用混合在一起时遇到的问题。

10-04 12:34
查看更多