Java Scanner类

发布于:2022-12-19 ⋅ 阅读:(482) ⋅ 点赞:(0)

在java5中新增加了一个新的Scanner类,用来获取用户从键盘输入的数据

Scanner类被包含在被称为“实用类”的java.util包中

所以想要在调用Scanner类时,需要调用import java.util.scanner类

代码如下:

package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
        //首先创建一个Scanner类对象,等号后面要以new开头 并且与标准输入流System.in相连
        Scanner sc=new Scanner(System.in);
        //创建完对象后就可以使用下面的方法了
       }

常用方法:

1、next()方法:获取用户从键盘上输入的字符串

执行原理:遇到第一个扫描有效字符,即第一个非空格非换行符后面开始,一直获取到下一个空格或换行符之前的那一个字符

//创建完对象后就可以从键盘输入中获取你所需要的输入数据
package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
        //首先创建一个Scanner类对象,等号后面要以new开头 并且与标准输入流System.in相连
        Scanner sc=new Scanner(System.in);
        //从键盘接收数据
        
        //创建完对象后就可以从键盘输入中获取你所需要的输入数据
        System.out.println("next方式接收:");
        //判断是否还有输入
        if (sc.hasNext()){ 
            String str1=sc.next();
            System.out.println("输入的数据为:"+str1);
            //sc.close();  //关闭该scanner
       }

 

 

2、nextLine()方法:也是可以获取用户输入的数据 但它与next()方法有不同点

package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
    Scanner sc=new Scanner(System.in);
    
    System.out.println("nextLine方式接收:");
    
    //判断是否有输入
    if (sc.hasNextLine()){
        String str2=sc.nextLine();
        System.out.println("接收的数据为:"+str2);
    }

 

在分别使用next()和nextLine()方法时,如果用户输入的值中有空格,则next()方法只会输出从第一个字符开始到空格前的最后一个字符

 

而nextLine()方法则会将空格后的数据跟着输出出来,中间原本是啥样,控制台显示出来的还是啥样

对比next()方法和nextLine方法的不同点:

next():
        1、一定要读取到有效字符后才可以结束输入。
        2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
        3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
        next() 不能得到带有空格的字符串,读两个由空格或符号隔开

nextLine():
        1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
        2、可以获得空格

3、nextInt()方法:只能获取整数类型的数据

package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
        Scanner sc=new Scanner(System.in);
        System.out.println("nextInt方式接收整数数字:");
        int a=sc.nextInt();
        System.out.println("变量a的数值为:"+a);
    }

 nextInt方法可以输入一组数字 如 147 258 369(每个数字间用一个或多个空格隔开),可被多个nextInt()方法读取,中间的空格不会被读取

package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
        Scanner sc=new Scanner(System.in);
        
        System.out.println("可以输入多组数字(中间用空格隔开):");
        int b=sc.nextInt();
        int c=sc.nextInt();
        int d=sc.nextInt();
        System.out.println("上面的数值分别为:"+b+" "+c+" "+d);
    }

4、nextDouble()方法:使用方法同理nextInt()  但是它可以读取小数

package demo;

import java.util.Scanner;
public class scanner扫描类 {
    public static void main(String arg[]){
        Scanner sc=new Scanner(System.in);

        System.out.println("nextDouble()方法可以接收小数:");
        double m=sc.nextDouble();
        System.out.println(m);
    }

通过上面的nextInt和nextDouble可以输入多个数字,并且计算比如平均值或总数的相关问题

附图:详细的nextxxx和hasnextxxx方法(转自Java Scanner类的常用方法及用法(很详细)_规则固态长方体物质空间移动工程师的博客-CSDN博客_java scanner