更新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("=========================="); } } } }