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

how to take char input before int input in java?

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

改变这个:

long l=Integer.parseInt(br.readLine());

至:

long l=Long.parseLong(br.readLine(), 10); 

这是因为您正在尝试将 String 转换为 Long 而不是 Integer 类型。

假设用户在第一个问题上键入 X 并按回车键,然后在第二个问题上键入 123 并按回车键,这意味着输入流包含以下字符:

X  <CR>  1  2  3  <CR>

当你调用read()时,你只读到了X。当您随后调用 readLine() 时,您会读取 <CR> 并返回一个空白字符串。

1 2 3 <CR> 在输入流中仍处于未读状态。

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

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