Java 如何在循环外使用BufferedReader从键盘获取输入?
如何在循环外部编写Java 如何在循环外使用BufferedReader从键盘获取输入?,java,bufferedreader,java-io,Java,Bufferedreader,Java Io,如何在循环外部编写BufferedReader?如果我在外部使用它,它将显示以下异常: InputStreamReader inp= new InputStreamReader(System.in); do { BufferedReader br = new BufferedReader(inp); System.out.println("Enter Roll number : "); int rno= Integer.parseInt(br.readLine());
BufferedReader
?如果我在外部使用它,它将显示以下异常:
InputStreamReader inp= new InputStreamReader(System.in);
do
{
BufferedReader br = new BufferedReader(inp);
System.out.println("Enter Roll number : ");
int rno= Integer.parseInt(br.readLine());
System.out.println("Enter name: ");
String name= br.readLine();
System.out.println("Continue y/n: ");
char ans=(char)br.read();
} while(ans=='y');
是否有任何机制来刷新
缓冲读取器
?可以做些什么呢?这不“好”,但对我来说很有效-我添加了br.readLine()
我在这里回答了一个类似的问题:@Ridhi Jain为了解释为什么这是必要的,
read()
读取“y”,但缓冲区中仍然有一个换行符,因为您必须在“y”之后键入一个换行符才能让程序接受它readLine()
处理换行符,以便下一个parseInt()
不会尝试解析它。
java.lang.numberformatexception for input string at
java.lang.Integer.parseInt(Integer.java:468)
public static void main(String args[]) throws IOException {
BufferedReader br = null;
try {
InputStreamReader inp = new InputStreamReader(System.in);
br = new BufferedReader(inp);
char ans;
do {
System.out.println("Enter Roll number : ");
int rno = Integer.parseInt(br.readLine());
System.out.println("Enter name: ");
String name = br.readLine();
System.out.println("Continue y/n: ");
ans = (char) br.read();
br.readLine();
} while (ans == 'y');
} finally {
if (br != null) {
br.close();
}
}
}