Java之Scanner类

参考链接:https://www.bilibili.com/video/BV12J41137hu?p=33

  • 基本结构
    两种方法,Scanner.Next()以及Scanner.NextLine():
public class TestScanner {
	
	public static void main(String[] args) {
		//新建Scanner对象
		Scanner scanner = new Scanner(System.in);
		//用户输出,有两种用法
		//1.Scanner.next,搭配Scanner.hasNext();
		//2.Scanner.nextLine,搭配Scanner.hasNextLine();
		
		//方法1
		System.out.println("请输入:");
		if(scanner.hasNext()) 
		{
			System.out.println("输入的是"+scanner.next());
		}
		//此方法是以空格为结束符的,所以无法接收到含有空格的字符串,而且如果字符串开始前有空格,则空格省略
		
		//方法2
		System.out.println("请输入:");
		if(scanner.hasNextLine()) 
		{
			System.out.println("输入的是"+scanner.nextLine());
		}
		//此方法是以Enter为结束符的,所以可以接收到含有空格的字符串,而且如果字符串开始前有空格,则空格不会省略
		
		
		//关闭Scanner对象,要有关闭IO流的好习惯
		scanner.close();
	}

}
result:
请输入:
23    32   3213 
输入的是23
请输入:
输入的是    32   3213
  • 扩展
    例如Scanner.nextInt()...可以给定具体接受的数据类型
public class TestScanner2 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
	    System.out.println("请输入:");
	    //输入int类型
	    if(scanner.hasNextInt()) {
	    	System.out.println("输入的是int型 "+scanner.nextInt());
	    }
	    //若输出的是float型
	    if(scanner.hasNextFloat()) {
	    	System.out.println("输入的是float型 "+scanner.nextFloat());
	    }
	    scanner.close();
	}
}
result1:
请输入:
12
输入的是int型 12
12
输入的是float型 12.0

result2:
请输入:
12.1
输入的是float型 12.1
  • 一个简单应用例子
    利用连续输入实现一个实例,求多个数的平均数。要求输入多个数,以非数的字符结束输入
public class TestScnaner3 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		double score = 0.0;
		int number = 0;
		System.out.println("请输入:");
		while(scanner.hasNextDouble()) {  //nextDouble()就不是以空格为终止符,而是以非double的输入为终止符
			score+=scanner.nextDouble();
			number++;
		}
		score/=number;
		System.out.println("平均数是 "+score);
		scanner.close();
	}
}
请输入:
1 2 3 4 5 6 7 8 9 10 s
平均数是 5.5
posted on 2020-09-23 20:35  pipony  阅读(116)  评论(0)    收藏  举报