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

时间:2016-04-21 20:37:37

标签: java string char inputstream

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

2 个答案:

答案 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类型。