Java Scanner的使用和hasNextXXX()的用法说明

 更新时间:2021年10月30日 15:35:46   作者:无赖H4  
这篇文章主要介绍了Java Scanner的使用和hasNextXXX()的用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

输入输出

输出

基本语法

System.out.println(msg); //输出一个字符串,自带换行
System.out.print(msg); //输出一个字符串,不带换行
System.out.printf(msg); //格式化输出,和C语言相同

例如:

public class SannerDemo {
    public static void main(String[] args) {
        System.out.println("hello world!");
        System.out.print("hello world!");
        String str = "hello world";
        System.out.printf("%s\n",str);
    }
}

在这里插入图片描述

快捷键推荐:在这里,如果使用的是 IDEA的话,可以输入sout然后回车,会自动输出 System.out.println();

输入

使用Scanner读取

首先需要导入==import java.util.Scanner;==的包,然后 Scanner sc =new Scanner(System.in);,这段代码的主要作用是,从键盘中输入中读取数据。

然后读取数据:

next()、nextInt()和nextLIne()的区别;

import java.util.Scanner;
public class SannerDemo {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println(i);   //读取int型的数据
        //读取一行数据
        String s1 = sc.nextLine();
        System.out.println(s1);
        //读取字符串
        String s2 = sc.next();
        System.out.println(s2);
    }

nextInt():

 		int i = sc.nextInt();
        System.out.println(i);   //读取int型的数据

在这里插入图片描述

在这里插入图片描述

可以读取数字,但是遇到空格,只能读取空格前的数字。

next():

//        //读取字符串
        String s2 = sc.next();
        System.out.println(s2);

在这里插入图片描述

可以读取字符串,但是遇到空格,只能读取空格前的数字。

nextLine():

  		 //读取一行数据
        String s1 = sc.nextLine();
        System.out.println(s1);

在这里插入图片描述

可以读取字符串,并读取这一行 ,但是遇到回车结束。

注意:

next()和nextLine()不可以同时使用:

例如:

        //读取字符串
        String s2 = sc.next();
        System.out.println(s2);
        //读取一行数据
        String s1 = sc.nextLine();
        System.out.println(s1);

在这里插入图片描述

这样只会输出一行,这是因为nextLine()读取了回车,然后结束。

next()遇到空客会结束。

在这里插入图片描述

使用Scanner循环读取N个数字/字符串

hasNextInt()的使用

import java.util.Scanner;
public class SannerDemo {
    public static void main(String[] args) {
        Scanner sc =new Scanner(System.in);        
        while (sc.hasNextInt()){
            int i = sc.nextInt();//输入数字i
            System.out.println(i);//打印数字i
        }        
    }

在这里插入图片描述

当程序开始之后,会一直循环输入并打印一个数字,知道Ctrl+d结束程序

在这里sc.hasNextInt()的结果是一个boolean的类型,当结果为false是结束。

注意:

Ctrl+d用来结束循环输入多个数据

同理:

在这里插入图片描述

这些方法都可以用于循环数据输入。

关于Scanner中nextxxx()须注意的一点

 public static void main(String[] args) {
        // TODO code application logic here        
        Scanner s = new Scanner(System.in); 
        
        //需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读走回车换行"\r\n".
 
        //所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走整数,第二次才是读取真正的字符串
        int i = s.nextInt(); 
        System.out.println("读取的整数是"+ i);
        String rn = s.nextLine();//读取到的是空格
        String a = s.nextLine();//读取到的是字符串
        System.out.println("读取的字符串是:"+a);
    }

PS:nextDouble,nextFloat与nextInt是一样的

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java实现设计模式之责任链模式

    Java实现设计模式之责任链模式

    责任链模式是一种行为设计模式,允许你将请求沿着处理链发送,然后处理者都可对其进行处理,完成后可以再将其传递给下一个处理者。下面将会举例说明什么是责任链模式,责任链模式该如何使用
    2022-08-08
  • maven在IDEA下载依赖包速度慢的问题解决

    maven在IDEA下载依赖包速度慢的问题解决

    这篇文章主要介绍了maven在IDEA下载依赖包速度慢的问题解决方案,本文通过图文结合的形式给大家分享解决方案,供大家参考,需要的朋友可以参考下
    2024-01-01
  • Spring Data JPA实现审计功能过程详解

    Spring Data JPA实现审计功能过程详解

    Spring Data JPA为跟踪持久性层的变化提供了很好的支持。通过使用审核,我们可以存储或记录有关实体更改的信息,例如谁创建或更改了实体以及何时进行更改
    2023-02-02
  • Java中异常Exception和捕获以及自定义异常详解

    Java中异常Exception和捕获以及自定义异常详解

    在工作过程中,我们常常需要在合适的地方抛出合适的异常,除了java自带的一些异常,我们可以在项目中定制自己的异常,并且全局捕获它,下面这篇文章主要给大家介绍了关于Java中异常Exception和捕获以及自定义异常的相关资料,需要的朋友可以参考下
    2023-05-05
  • SpringBoot actuator 健康检查不通过的解决方案

    SpringBoot actuator 健康检查不通过的解决方案

    这篇文章主要介绍了SpringBoot actuator 健康检查不通过的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java分布式ID中Snowflake雪花算法应用实现

    Java分布式ID中Snowflake雪花算法应用实现

    Snowflake算法作为一种高效且易于实现的分布式ID生成方案,能够很好地满足分布式系统中对全局唯一ID的需求,本文就来介绍一下Java分布式ID中Snowflake雪花算法应用实现,感兴趣的可以了解一下
    2024-07-07
  • MyBatis-Plus联表查询及分页代码举例

    MyBatis-Plus联表查询及分页代码举例

    本文介绍了mybatis-plus-join工具的使用,该工具可以简化mybatis-plus的联表查询,使得开发者可以以类似QueryWrapper的方式进行联表查询,无需手动编写xml文件,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • Maven多模块及version修改的实现方法

    Maven多模块及version修改的实现方法

    这篇文章主要介绍了Maven多模块及version修改的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-06-06
  • JAVA实现sm3加密签名以及防止重复攻击

    JAVA实现sm3加密签名以及防止重复攻击

    这篇文章主要给大家介绍了关于JAVA实现sm3加密签名以及防止重复攻击的相关资料,SM3是签名算法,和MD5一样(对于应用层来说),SM4是对称加密算法,和AES一样(对于应用层来说),需要的朋友可以参考下
    2023-10-10
  • Java 基础面试真题:String 为什么是不可变的?

    Java 基础面试真题:String 为什么是不可变的?

    本文主要介绍了String、StringBuffer和StringBuilder的区别,以及String不可变的原因,String不可变的原因是其内部使用final修饰的char数组保存字符串,同时String类没有提供修改字符串的方法,在Java9之后,String的底层实现由char[]改成了byte[],这是为了节省内存空间
    2025-01-01

最新评论