Java中import java.util.Scanner;语句的作用

本文详细介绍了Java中的Scanner类,用于从标准输入读取用户输入。讲解了Scanner类的基本用法,如hasNextXxx()和nextXxx()方法,以及next()与nextLine()的区别。示例代码展示了如何使用Scanner读取不同数据类型和字符串。在使用nextInt()和nextDouble()后,需要调用nextLine()去除剩余的换行符。
摘要由CSDN通过智能技术生成

一   java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。
首先要导入包   import  java.util.Scanner;

Scanner类的创建对象:     Scanner  S=new Scanner(System.in);    

方法基本格式


  hasNextXxx()  判断是否还有下一个输入项,其中Xxx可以是Int,Double等。如果需要判断是否包含下一个字符串,则可以省略Xxx

  nextXxx()  获取下一个输入项。Xxx的含义和上个方法中的Xxx相同。


S对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:  

next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()。

 

通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,在读取前我们一般需要 使用 hasNext 与 hasNextLine 判断是否还有输入的数据:

二   Scanner类中常用的方法next()和nextLine()的区别:


next():作为字符串输入的方法,自动屏蔽掉输入的分隔符,如空格、Tab键、回车键,直到遇到有效地字符输入后,则将这些分隔符作为结束标志;

nextLine();则是将从开始运行所输入的所有的字符,包括分隔符,均作为控制台输入,只有在遇到enter回车键时,才结束输入,并将所有的内容作为输入内容传给Scanner;

也就是说,next()方法并不能返回带空格、Tab键、回车符的字符串,而nextLine可以;

用next()方法代码如下:

import java.util.Scanner;
public class dd {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.next();
            System.out.println("输入的数据为:" + str1);
        }
        scan.close();
    }
}

import java.util.Scanner;
public class dd {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.next();
            System.out.println("输入的数据为:" + str1);
        }
        scan.close();
    }
}

输出的结果:

用nextLine()方法代码如下:

import java.util.Scanner;
public class dd {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.nextLine();
            System.out.println("输入的数据为:" + str1);
        }
        scan.close();
    }
}

import java.util.Scanner;
public class dd {
 
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        // 从键盘接收数据
 
        // next方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判断是否还有输入
        if (scan.hasNext()) {
            String str1 = scan.nextLine();
            System.out.println("输入的数据为:" + str1);
        }
        scan.close();
    }
}

输出的结果:

补充1:于sc.nextInt() ,sc.nextDouble等与sc.nextLine()使用时需要注意的问题

如果要求一次接受一个整数、浮点数和字符串?

假如你输入:

25
25.666
Welcome to Java!
import java.util.Scanner;
 
public class Test {
 
    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            int x=sc.nextInt();
            double y=sc.nextDouble();
            sc.nextLine();  /*去掉sc.nextDouble()语句后剩下的“\n”符号*/
            String s= sc.nextLine();
            System.out.println("String: "+s);
            System.out.println("Double: "+y);
            System.out.println("Int: "+x);
 
    }
}
  1. 用户的输入在计算机缓冲区中是这样存储的:42\n3.1415\nWelcome to HackerRank Java tutorials!\n

  2. 使用nextInt()读取42结束,剩下\n3.1415\nWelcome to HackerRank Java

  3. 使用nextDouble()读取3.1415,剩下\nWelcome to HackerRank Java

  4. 如果此时直接用nextLine()读取,该函数遇到换行符\n就结束

  5. 所以需要在这之前输入nextLine(),去掉缓冲区的\n,然后再读取

  6. 这是由于nextLine()会读取\n之前的所有内容,并去除\n,而nextDouble()等曾不会去除它后面的\n

如果对你有帮助,请点个免费的大拇哥

  • 92
    点赞
  • 238
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值