### Scanner类的用法 #### 一、简介与基本用法 `Scanner`类是Java SDK 1.5版本引入的新特性,它提供了一种方便的方式来读取基本数据类型(如int、double)以及字符串类型的数据。在Java中,通过`java.util.Scanner`包可以导入并使用`Scanner`类。 在程序开发中,`Scanner`类主要用于从标准输入流(如键盘输入)或其他输入源(如文件)读取数据。创建`Scanner`对象的基本语法如下: ```java Scanner scanner = new Scanner(System.in); ``` 这里`System.in`表示标准输入流,即通常所说的键盘输入。创建了`Scanner`对象后,可以通过一系列的方法来读取不同类型的数据,例如: - `nextByte()`:读取下一个字节。 - `nextDouble()`:读取下一个双精度浮点数。 - `nextFloat()`:读取下一个单精度浮点数。 - `nextInt()`:读取下一个整数。 - `nextLine()`:读取下一行字符串。 - `nextLong()`:读取下一个长整型数字。 - `nextShort()`:读取下一个短整型数字。 #### 二、示例代码解析 下面将对提供的示例代码进行详细分析: **示例1:** ```java import java.util.*; public class Example { public static void main(String[] args) { System.out.println("请输入任意多个浮点数,每输入完一个数字按回车确认"); System.out.println("输入非数字结束"); Scanner reader = new Scanner(System.in); double sum = 0; int m = 0; while (reader.hasNextDouble()) { double x = reader.nextDouble(); m = m + 1; sum = sum + x; } System.out.printf("%d个数字总和为%f\n", m, sum); System.out.printf("%d个数字平均值%f\n", m, sum / m); } } ``` 此段代码的功能是从用户那里读取一系列的浮点数,并计算这些浮点数的总和与平均值。程序首先提示用户输入数字,并在每次成功读取一个数字后更新总和与计数器。当用户输入非数字时,循环结束,程序输出计算结果。 **示例2:** ```java import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; public class ReadHuman { private static void readFile(String filename) { try { Scanner scanner = new Scanner(new File(filename)); scanner.useDelimiter(System.getProperty("line.separator")); while (scanner.hasNext()) { parseLine(scanner.next()); } scanner.close(); } catch (FileNotFoundException e) { System.out.println(e); } } private static void parseLine(String line) { Scanner lineScanner = new Scanner(line); lineScanner.useDelimiter(","); String name = lineScanner.next(); int age = lineScanner.nextInt(); String idate = lineScanner.next(); boolean isCertified = lineScanner.nextBoolean(); System.out.println(name + "年龄:" + age + "日期:" + idate + "认证:" + isCertified); } public static void main(String[] args) { if (args.length != 1) { System.err.println("usage: java ReadHuman fileLocation"); System.exit(0); } readFile(args[0]); } } ``` 此段代码用于从指定文件中读取数据。文件中的每一行包含四个字段:姓名、年龄、日期和是否认证。`Scanner`类在这里被用来读取文件中的每一行,并进一步解析每一行中的各个字段。具体步骤如下: 1. 使用`Scanner`类读取文件。 2. 设置分隔符为行分隔符,以便于逐行读取。 3. 在循环中逐行处理。 4. 对于每一行,再次使用`Scanner`对象,并设置分隔符为逗号,以便读取每个字段。 5. 读取并打印每个字段。 #### 三、使用技巧与注意事项 - **正确设置分隔符**:通过`useDelimiter`方法设置分隔符,这对于从文本中准确地读取数据至关重要。 - **检查数据类型**:使用`hasNextXxx()`方法可以先判断输入是否为期望的数据类型,避免出现异常。 - **关闭资源**:使用完`Scanner`对象后记得调用`close()`方法关闭资源,防止内存泄漏。 `Scanner`类为Java开发者提供了一个简洁高效的读取输入方式。无论是从标准输入还是文件中读取数据,都能很好地满足需求。掌握`Scanner`类的使用方法对于编写交互式程序或处理大量数据非常有帮助。
Scanner reader=new Scanner(System.in);
然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:
next.Byte(),nextDouble(),nextFloat,nextInt(),nextLine(),nextLong(),nextShot()
上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入
12.34,hasNextFloat()的值是true,而hasNextInt()的值是false. NextLine()等待用户输入一个文
本行并且回车,该方法得到一个String类型的数据。
下面是一个实例:
import java.util.*;
public class Example{
public static void main(String args[]){
System.out.println("请输入若干个数,每输入一个数用回车确认");
System.out.println("最后输入一个非数字结束输入操作");
Scanner reader=new Scanner(System.in);
double sum=0;
int m=0;
while(reader.hasNextDouble()){
double x=reader.nextDouble();
m=m+1;
sum=sum+x;
}
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 离线OCR(此软件解压后双击即可运行, 免费)
- 公开整理-上市公司员工学历及工资数据(1999-2023年).xlsx
- 公开整理-上市公司员工学历及工资数据集(1999-2023年).dta
- GDAL-3.4.3-cp38-cp38-win-amd64.whl(GDAL轮子-免编译pip直接装,下载即用)
- 基于Java实现WIFI探针的商业大数据分析技术
- 抖音5.6版本、抖音短视频5.6版、抖音iOS5.6版、抖音ipa包5.6
- 图像处理领域、QT技术、架构,可直接借鉴
- 【源码+数据库】基于Spring Boot+Mybatis+Thymeleaf实现的宠物医院管理系统
- H5漂流瓶交友源码 社交漂流瓶H5源码+对接Z支付+视频教程
- 华为ICT大赛云赛道真题资源库.zip