博客
关于我
9.8 Scanner类
阅读量:325 次
发布时间:2019-03-04

本文共 1352 字,大约阅读时间需要 4 分钟。

  • Scanner类的对象从字符串中解析程序所需的数据

 

创建Scanner对象,并将要解析的字符串传递给所构造的对象。

例如,对于字符串:String s=”telephone cost 876  dollar.Computer cost 2398.89  dollar.”;

为了解析出s中的单词,可以如下构造一个Scanner对象:

Scanner scanner=new Scanner(s);

那么scanner默认使用空格作为分隔标记来解析字符串中的单词,也可以让Scanner对象调用方法:

useDelimiter(正则表达式);

将正则表达式作为分隔标记,即Scanner对象在解析字符串时,把与正则表达式匹配的字符串作为分隔标记。

 

 

Scanner对象解析字符串的特点如下:

scanner 调用next()方法依次返回被解析的字符串s中的单词,如果s的最后一个单词已被next()方法返回,scanner调用hasNext()将返回false,否则是true.

对于被解析的字符串s中的数字型的单词,比如876,2398.89等,scanner可以用nextInt()或nextDouble()方法来代替next()方法,即scanner调用nextInt()或nextDouble()方法将数字型单词转化为int或double数据返回

如果单词不是数字型单词,scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常,在处理异常时可以调用next()方法返回该非数字化单词

 

例子:

import java.util.InputMismatchException;import java.util.Scanner;public class p1 {    public static void main(String args[]) {        String s="话费清单:市话费:76.89元,长途话费:168.38元,上网费:12.68元。";        Scanner scanner=new Scanner(s);//匹配所有非数字字符串,+的意思是出现一次或者多次       scanner.useDelimiter("[^0123456789.]+");     //设置分隔标记        double total=0;        while (scanner.hasNext()){            try {                double money=scanner.nextDouble();                total=total+money;                System.out.println(money);            }            catch (InputMismatchException e){                String t=scanner.next();            }        }        System.out.println(total);    }}

 

转载地址:http://vish.baihongyu.com/

你可能感兴趣的文章
keil左侧文件调整方法
查看>>
STM8 GPIO模式
查看>>
omnet++
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
C语言实现dijkstra(adjacence matrix)
查看>>
C语言学习从初级到精通的疯狂实战教程-徐新帅-专题视频课程
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
NAT工作原理
查看>>
Processes, threads and goroutines
查看>>
c++中的10种常见继承
查看>>
Vue学习—深入剖析渲染函数
查看>>
Vue学习—深入剖析函数式组件
查看>>
wxpython的Hello,World代码探索
查看>>
【数字图像处理】OpenCV3 学习笔记
查看>>
【单片机开发】智能小车工程(经验总结)
查看>>
【单片机开发】基于stm32的掌上游戏机设计 (项目规划)
查看>>
KeepAlived介绍、配置示例、KeepAlived配置IPVS、调用脚本进行监控
查看>>
Scala集合-数组、元组
查看>>
04 程序流程控制
查看>>