如何在int输入之前在java中输入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); 
    } 
} 
+0

那么你的问题究竟是什么? – Mureinik

+0

我想先采取字符输入,然后int输入,但它显示数字格式异常 –

比方说,用户类型X并按下回车键上的第一个问题,然后类型123和压在第二个问题中输入,这将意味着输入流包含下列字符:

X <CR> 1 2 3 <CR> 

当你请致电read(),您只能阅读X。当您拨打readLine()时,您会看到<CR>并返回空白字符串。

1 2 3 <CR>仍然在输入流中未读。

解决方法:在阅读X跳过过去的路线,使用readLine()其余阅读XString后调用readLine(),而不是作为一个char

FYI:这是完全一样的问题,人们继续使用时Scanner和混合呼叫nextLine()与调用其他nextXxx()方法,如nextInt()有。

+0

因此,每当我必须采取字符输入我必须输入字符串,然后选择第一个字符..? –

+0

您正在以面向行的方式提示用户,例如,键入回答,按回车,键入回答,按回车键,这样您也应该以面向行的方式读取输入,特别是如果您一次只请求一个值。 ---另外,请记住验证,例如如果用户按Enter键而不输入任何内容,那么什么?或者当你询问一个号码时输入'abc'。 – Andreas

更改此:

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

到:

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

这是因为你正试图将串地龙,而不是一个整数类型转换。