更新java缓冲区


1.直接每次都使用新的Scanner对象,效果上就相当于更新了缓冲区

public class Test {
    public static void main(String[] args) throws Exception {
        new A().tryInt();
    }
}


class A  {
    public void tryInt() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        for (; ; ) {
            int a;
            try {
                a = Integer.valueOf(new Scanner(System.in).nextInt());//每次都是新对象,相当于更新了缓冲区
                System.out.println("您输入的整数为:" + a);
                break;
            } catch (Exception exception) {
                System.out.println("对不起,您需要输入的是一个整数,请重新输入");
                System.out.println("==========================");
          //scanner = new Scanner(System.in);也可以不在上面加,在这里让引用指向新对象,
//和上面同理,每次都是新对象,相当于更新了缓冲区
} } } }

2.用next()会每次都要求你输入新东西,但是nextInt()会直接扫描缓冲区

import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws Exception {
        new A().tryInt();
    }
}


class A  {
    public void tryInt() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        for (; ; ) {
            int a;
          //与nextInt()不同,next()不会直接扫描缓冲区,而是每次都要你输入之后再扫描
        String inputStr = scanner.next();
try { a = Integer.parseInt(inputStr); System.out.println("您输入的整数为:" + a); break; } catch (Exception exception) { System.out.println("对不起,您需要输入的是一个整数,请重新输入"); System.out.println("=========================="); } } } }

相关