如何在 Java 中的 int 输入之前获取 char 输入


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); 

这是因为您尝试将字符串转换为长整型而不是整数类型。

最新更新