Java Scanner类的使用

一、Scanner类概述

Scanner类是Java中的一个工具类,它提供了一种方便的方式来读取用户输入和文件内容。与其他读取器不同,Scanner类将输入数据分割成单个标记,其中每个标记可被解释为不同类型的数据。Scanner类的优点在于它提供了一些内置函数来解析基本数据类型,也允许开发者使用正则表达式从非结构化文本中解析出数据。

二、Scanner类的创建

要使用Scanner类,需要先创建一个Scanner对象。Scanner可以从多种数据源获取输入,包括从标准输入读取、读取文件、读取字符串、读取网络数据等等。以下示例展示如何从标准输入(System.in)读取数据:

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int num = scanner.nextInt();
        System.out.println("你输入的数字是:" + num);
    }
}

在上面的示例中,我们首先创建了一个Scanner对象,然后通过调用nextInt()方法获取用户输入的整数,并将其保存在变量num中,最后输出用户输入的数字。需要注意的是,Scanner对象在使用完毕后应该关闭,以释放资源。在以上示例中我们没有显式调用Scanner的close()方法,可以通过将Scanner对象放在try-with-resources语句中来自动关闭该对象:

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        try (Scanner scanner = new Scanner(System.in)) {
            System.out.println("请输入一个整数:");
            int num = scanner.nextInt();
            System.out.println("你输入的数字是:" + num);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

三、Scanner类的读取

Scanner类提供了多个方法来读取输入数据,常用的有nextInt()、nextFloat()、nextDouble()、nextLine()等方法。以下示例演示如何使用nextLine()方法读取一行文本:

import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入几句话(以回车键结束输入):");
        String sentence = scanner.nextLine();
        System.out.println("你输入的句子是:" + sentence);
    }
}

在上面的示例中,我们使用Scanner对象的nextLine()方法读取输入的一行文本,并将其保存在字符串变量sentence中,最后输出用户输入的句子。运行该程序,输入几句话,程序会输出你输入的完整句子。需要注意的是,nextLine()方法会将回车符和换行符也一同读入,因此如果用户先输入了空行,调用nextLine()方法时会直接返回一个空字符串。

四、Scanner类的区域设置

Scanner类允许调用Locale类中的常量来设置区域信息,以便正确地解析数据。以下示例演示如何使用Scanner类解析某国货币的货币值:

import java.util.Locale;
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("¥10.5", "¥#0.00", Locale.CHINA);
        double money = scanner.nextDouble();
        System.out.printf("解析的货币值为:%.2f元", money);
    }
}

在以上示例中,我们定义了一个Scanner对象,该对象读取的数据是“¥10.5”,格式字符串为“¥#0.00”,解析区域为中国(Locale.CHINA)。接着我们调用Scanner对象的nextDouble()方法来解析数据,得到的解析结果为10.5。需要注意的是,在中国,货币符号是人民币符号“¥”,在格式字符串中需要添加该符号。

五、Scanner类的异常处理

当输入数据不符合所需的格式时,Scanner类会抛出InputMismatchException异常。因此在使用Scanner类时需要进行异常处理。以下示例演示如何使用try-catch语句处理异常:

import java.util.InputMismatchException;
import java.util.Scanner;

public class ScannerDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        try {
            int num = scanner.nextInt();
            System.out.println("你输入的数字是:" + num);
        } catch (InputMismatchException e) {
            System.out.println("输入的数据格式不正确,请输入一个整数。");
        }
    }
}

在以上示例中,我们使用Scanner对象读取用户输入的数字,如果输入不是整数,程序会抛出InputMismatchException异常。我们在try块中调用nextInt()方法,如果没有抛出异常,则正常输出用户输入的数字。否则,程序会捕获异常并输出提示信息。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/288838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-24 03:01
下一篇 2024-12-24 03:01

相关推荐

  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • VSCode为什么无法运行Java

    解答:VSCode无法运行Java是因为默认情况下,VSCode并没有集成Java运行环境,需要手动添加Java运行环境或安装相关插件才能实现Java代码的编写、调试和运行。 一、…

    编程 2025-04-29
  • Java任务下发回滚系统的设计与实现

    本文将介绍一个Java任务下发回滚系统的设计与实现。该系统可以用于执行复杂的任务,包括可回滚的任务,及时恢复任务失败前的状态。系统使用Java语言进行开发,可以支持多种类型的任务。…

    编程 2025-04-29
  • Java 8 Group By 会影响排序吗?

    是的,Java 8中的Group By会对排序产生影响。本文将从多个方面探讨Group By对排序的影响。 一、Group By的概述 Group By是SQL中的一种常见操作,它…

    编程 2025-04-29

发表回复

登录后才能评论