Java学习笔记(五):Scanner对象的使用

简介: Java学习笔记(五):Scanner对象的使用

@[toc]
  
  
  

作用

之前学的基本语法中并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,使得程序可以获取用户的输入。java.util.Scanner 是Java5的新特性,可以通过Scanner 类来获取用户的输入。

  
  
  

使用步骤

  
基本语法:

Scanner scanner = new Scanner(System.in);
  1. 导包

  import java.util.Scanner;

  1. Scanner的实例化
      Scanner scanner = new Scanner(System.in);
  2. 调用Scanner类的相关方法,来获取指定类型的变量。

  
  
  

next() 和 nextLine()

  

通过 Scanner 类的 next() 和 nextLine() 方法可以获取输入的字符串。

区别:

next():

  1. 一定要读取到有效字符后才可以结束输入。

  解读:必须输入,否则程序就不停止。(敲空格只会跳到下一 行,但程序依然不会结束)

  1. 对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。

  解读: hello会输出hello,无空格。

  1. 只有输入有效字符后才将其后面输入的空白作为分隔符或结束符。

  解读:字符串后有空格就结束。

  1. next() 不能得到带有空格的字符串。

  解读:字符串前有空格输出时就去掉,字符串后有空格时程序就结束了

  
  
nextLine():

  1. 以 Enter(回车)为结束符,也就是说 nextLine() 方法返回的是输入回车之前的所有字符。

  解读:输入的是什么,程序就接收什么。空格、@#¥等字符都能接收

  1. 可以获取空白。

  解读:直接敲回车程序就停止了。

  
  
练习一波:

先试next():

// 1. 导包
import java.util.Scanner;

public class Scanner01 {
    public static void main(String[] args) {
    
        // 2. Scanner的实例化
        Scanner scanner = new Scanner(System.in);
        
        System.out.println("使用next方法接收"); 
        
        // 3. 调用Scanner类的相关方法
        String str1 = scanner.next();  //获取输入的字符串
        System.out.println("输出的内容为:" + str1);
        

        //凡是属于IO流的类如果不关闭会一直占用资源。要养成好习惯用完就关掉。
        scanner.close();

    }
}

在这里插入图片描述
遇到空格,程序结束,后面 World 没了


再试nextLine():

// 1. 导包
import java.util.Scanner;

public class Scanner01 {
    public static void main(String[] args) {
    
        // 2. Scanner的实例化
        Scanner scanner = new Scanner(System.in);

        System.out.println("使用nextLine方法接受");

        // 3. 调用Scanner类的相关方法
        String str2 = scanner.nextLine();  //获取输入的字符串
        System.out.println("输出的内容为:" + str2);


        //凡是属于IO流的类如果不关闭会一直占用资源。要养成好习惯用完就关掉。
        scanner.close();

    }
}

在这里插入图片描述
返回的是输入回车之前的所有字符。

  
  
  

其他方法

  

之前说的next()nextLine()都是获取字符串类型的输入数据。

下面介绍几个常用的方法,用来获取其他数据类型的输入数据。

  
整型:
nextInt();

  
浮点型:
nextDouble();
nextFloat();

  
布尔型:
nextBoolean();

字符型:
对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
next().charAt(0);  获取索引位置为0的字符

  

练习:

// 1. 导包
import java.util.Scanner;

public class scannerTest {
    public static void main(String[] args) {

        // 2. Scanner的实例化
        Scanner scanner = new Scanner(System.in);

        // 3. 调用Scanner类的相关方法
        System.out.println("请输入你的姓名:");
        String name = scanner.next();

        System.out.println("请输入你的年龄:");
        int age = scanner.nextInt();

        System.out.println("请输入你的体重:");
        double weight = scanner.nextDouble();

        System.out.println("你是否相中我了呢?(true/false)");
        boolean isLove = scanner.nextBoolean();

        // 对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
        System.out.println("请输入你的性别(男/女)");
        char gender = scanner.next().charAt(0); // 获取索引位置为0的字符


        System.out.println("你的信息为:");
        System.out.println("姓名:" + name + " 年龄:" + age + " 体重:" + weight + " 相中我:" + isLove + "性别:" + gender);

    }
}

在这里插入图片描述

  
  
  
  
      在这里插入图片描述

相关文章
|
7天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
20 9
Java——类与对象(继承和多态)
|
7天前
|
SQL Java 编译器
Java——类与对象(封装)
封装是面向对象编程中的概念,指将数据(属性)和相关操作(方法)组合成独立单元(类),使外部无法直接访问对象的内部状态,只能通过提供的方法进行交互,从而保护数据安全。例如,手机将各种组件封装起来,只暴露必要的接口供外部使用。实现封装时,使用`private`关键字修饰成员变量,并提供`get`和`set`方法进行访问和修改。此外,介绍了包的概念、导入包的方式及其注意事项,以及`static`关键字的使用,包括静态变量和方法的初始化与代码块的加载顺序。
18 10
Java——类与对象(封装)
|
7天前
|
Java C语言
Java——类与对象
这段内容介绍了Java中的类和对象、`this`关键字及构造方法的基本概念。类是对现实世界事物的抽象描述,包含属性和方法;对象是类的实例,通过`new`关键字创建。`this`关键字用于区分成员变量和局部变量,构造方法用于初始化对象。此外,还介绍了标准JavaBean的要求和生成方法。
18 9
Java——类与对象
|
8天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
从Java环境的搭建到实际代码的编写,从基本用法的讲解到底层原理的剖析,深度解析Java基础知识。本文是《Java学习路线》专栏的起始文章,旨在提供一套完整的Java学习路线,覆盖Java基础知识、数据库、SSM/SpringBoot等框架、Redis/MQ等中间件、设计模式、架构设计、性能调优、源码解读、核心面试题等全面的知识点,并在未来不断更新和完善,帮助Java从业者在更短的时间内成长为高级开发。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(基础篇)
|
8天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
本文是Java基础的进阶篇,对异常、集合、泛型、Java8新特性、I/O流等知识进行深入浅出的介绍,并附有对应的代码示例,重要的地方带有对性能、底层原理、源码的剖析。适合Java初学者。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(进阶篇)
|
8天前
|
存储 Java
Java的对象和类的相同之处和不同之处
在 Java 中,对象和类是面向对象编程的核心。
|
2天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
42 4
|
2天前
|
SQL Java 关系型数据库
在Java中,创建数据源对象
在Java中,创建数据源对象
10 1
|
8天前
|
存储 Java
Java编程中的对象序列化与反序列化
【9月更文挑战第12天】在Java的世界里,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何通过实现Serializable接口来标记一个类的对象可以被序列化,并探索ObjectOutputStream和ObjectInputStream类的使用,以实现对象的写入和读取。我们还将讨论序列化过程中可能遇到的问题及其解决方案,确保你能够高效、安全地处理对象序列化。
|
8天前
|
存储 安全 Java
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)
本文是“Java学习路线”中Java基础知识的高级篇,主要对多线程和反射进行了深入浅出的介绍,在多线程部分,详细介绍了线程的概念、生命周期、多线程的线程安全、线程通信、线程同步,并对synchronized和Lock锁;反射部分对反射的特性、功能、优缺点、适用场景等进行了介绍。
Java修仙之路,十万字吐血整理全网最完整Java学习笔记(高级篇)