Scanner进阶
- 使用hasNextInt(),hasNextFloat(),hasNextDouble()等方法,可用于判断输入数据的类型
例:判断输入的数据是否整数类型,或是否是浮点数类型
public static void main(String[] args) {Scanner scanner=new Scanner(System.in);int i=0;float f=0.0f;System.out.println("请输入数据");if (scanner.hasNextInt()){ //判断输入数据类型是否为整数型i= scanner.nextInt();System.out.println("已输入整数:"+i);scanner.close(); //是整数型,则关闭scanner的资源空间,不继续执行后续的if判断} else {System.out.println("输入的不是整数");scanner.close();}if (scanner.hasNextFloat()){ //经过上一个if判断,不是整数型,则继续判断是否为浮点型f= scanner.nextFloat();System.out.println("已输入小数:"+f);scanner.close();}else {System.out.println("输入的不是小数");scanner.close();}}
运行结果:
输入整数:
注意:
我希望判断是为整数型之后不再进行后续的判断,所以在第一个if为真时加上 scanner.close();,这会使得程序存在异常,但不影响程序的正常运行
输入小数:
-
练习:为输入的数字求和并求平均数,每输入一个数用回车键进行确认,以非数字的数据进行结尾
public static void main(String[] args) {//输入多个数字,求其综合以及平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果Scanner scanner=new Scanner(System.in);int i=0; //用于标记输入数字的数量double sum=0;//记录总和//通过循环判断是否还有输入,并在循环内部进行求和和统计while (scanner.hasNextDouble()){sum+= scanner.nextDouble();i++;}System.out.println("一共输入"+i+"个数字,其总和为"+sum+"其平均值为"+sum/i);scanner.close();}
运行结果:
最后,欢迎大家一起交流~~