Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在循环外使用BufferedReader从键盘获取输入?_Java_Bufferedreader_Java Io - Fatal编程技术网

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