scanner类

类和对象

  • 对比示例
  • 类(设计图) 对象(实际汽车)
    描述“汽车是什么” 是一辆真正可以驾驶的汽车
    不占用物理空间 停在车库里,占据实际空间
    可以有多个对象(实例) 是类的一个具体例子
    例如:class Car {...} 例如:Car myCar = new Car();

Scanner类

  • Scanner是一个类,它处于java.util包中。而通过这个类创建出来的实例,像new Scanner(System.in)这样的,才被称作对象

  • 类(Class)
    Scanner类是Java提供的一个工具类,其作用是解析基本数据类型和字符串。该类包含了众多方法,例如:

    • nextInt():读取一个整数。
    • nextDouble():读取一个双精度浮点数。
    • next():读取一个以空格为分隔符的字符串。
    • nextLine():读取一整行文本,以换行符结束。
    • hasNext():判断是否还有输入数据。
    • hasNextInt():判断下一个输入是否为整数。

    这些方法可以帮你从输入源里获取数据。

  • 注意事项

    1. 换行符问题:使用nextLine()前,若先使用了nextInt()next()等方法,要先用nextLine()消耗掉残留的换行符。
    2. 资源管理:使用完毕后,要调用close()方法关闭Scanner,避免资源浪费。不过关闭标准输入后,无法再次打开。
    3. 异常处理:若输入的数据类型与读取方法不匹配,会抛出InputMismatchException异常,建议进行异常处理。
  • 对象(Object)
    当你使用new Scanner(System.in)语句时,就创建了Scanner类的一个对象。这个对象是类的具体实例,能够执行类所定义的方法。

  • 举例

    package com.xxxx.scanner;
    
    import java.util.Scanner;
    
    public class Demo01 {
    	public static void main(String[] args) {
    		//创建一个scanner对象,接收用户输入
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("使用next方式接收:");
    
    		//判断用户有没有输入字符串
    		if (scanner.hasNext()){
    			//使用next方式接收
    			String str = scanner.next(); //输入Hello World
    			System.out.println("输出的内容为:"+str); //输出Hello,next():读取一个以空格为分隔符的字符串。
    		}
    		//凡是IO流的类如果不关闭会一直占用资源,要养成好习惯用完关掉
    		scanner.close();
    	}
    }
    
    package com.xxxx.scanner;
    
    import java.util.Scanner;
    
    public class Demo03 {
    	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);
    		}else{
    			System.out.println("输入的不是整数数据!");
    		}
    		scanner.close();
    	}
    }
    
    package com.xxxx.scanner;
    
    import java.util.Scanner;
    
    public abstract class Demo04 {
    	//可以输入多个数字,并求其总和与平均数,每输入一个数字用回车确认,通过输入非数字来结束输入并输出执行结果
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in); //输入new Scanner(System.in);按alt+enter补全。注意要在(main)方法里.
    
    
    		//接收和
    		double sum = 0;
    		//接收数字个数
    		int m = 0;
    		//判断用户是否还有输入,并在里面对每次进行求和统计
    		while(scanner.hasNextDouble()){
    			double x = scanner.nextDouble();
    			m++;
    			sum = sum + x;
    			System.out.println("你输入了第"+m+"个数据,当前结果为:"+sum);
    		}
    		System.out.println(m+"个数的和为:" + sum);
    		System.out.println(m+"个数的平均值是:" + (sum/m));
    
    
    
    
    
    		scanner.close();
    	}
    
    
    
    }