review12
使用StringTokenizer对象分解字符串,和split()不同的是,StringTokenizer对象不使用正则表达式作为分隔标记。
当Fenix一个字符串并将字符串分解成可被独立使用的单词时,就可以使用StringTokenizer类,该类有两个构造方法。
StringTokenizer(String s):为字符串s构造一个分析器。使用的是默认的分割标记,即空格符(若干个空格被看作一个空格)、换行符、回车符、Tab符、进纸符做分隔标记。
StringTokenizer(String s, String delim):为字符串s构造一个分析器。参数delim中的字符被作为分隔标记。分隔标记的任意组合仍然是分隔标记。
称一个StringTokenizer对象为一个字符串分析器,一个分析器可以使用nextToken()方法逐个获取字符串中的语言符号(单词),每当调用nextToken()时,都将在字符串中获得下一个语言符号,每当获取一个语言符号,字符串分析器中负责计数的变量的值就自动减1,。为了控制获取字符串的循环,要用到该类的hasMoreTokens()方法,只要字符串中还有语言符号,计数变量的值就大于0,该方法返回true,否则返回false。
StringTokenizer对象的使用情况如下所示:
import java.util.StringTokenizer;
public class Test07 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "you are welcome(thank you), nice to meet you";
StringTokenizer fenxi = new StringTokenizer(s, "() ,");
System.out.println("该句子单词共有:" + fenxi.countTokens() + "个");
while(fenxi.hasMoreTokens())
{
String str = fenxi.nextToken();
System.out.println(str);
}
}
}
运行结果如下所示:

使用Scanner类从字符串中解析出程序所需要的数据
1.在默认情况下,Scanner对象将空格作为分隔标记来解析字符串中的单词,解析操作的特点如下:
Scanner对象调用next()方法一次返回字符串中的单词,如果字符串中最后一个单词已被next()方法返回,Scanner调用hasnext()将返回true,否则返回false。
对于被解析的字符串中的数字型单词,比如618,168.98,等,Scanner可以用nextInt()或nextDouble()方法来代替next()方法,将数字型单词转化为int或double数据返回。
如果单词不是数字型单词,Scanner调用nextInt()或nextDouble()方法将发生InputMismatchException异常。代码展示情况如下所示:
import java.util.InputMismatchException;
import java.util.Scanner; public class Test08 { public static void main(String[] args) {
// TODO Auto-generated method stub
String cost = " TV cost 876 dollar. Computer cost 2398 dollar.";
Scanner reader = new Scanner(cost);//默认以空格作为分隔标记
double sum = 0;
while(reader.hasNext())
{
try{
double price = reader.nextDouble();
sum += price;
}
catch(InputMismatchException exp)
{
System.out.println(reader.next());
}
}
System.out.println("总计sum=" + sum);
}
}
运行结果如下所示:

2.使用正则表达式作为分隔标记解析字符串,Scanner对象可以调用userDelimiter(String regex)方法,代码展示如下所示:
import java.util.InputMismatchException;
import java.util.Scanner; public class Test09 { public static void main(String[] args) {
// TODO Auto-generated method stub
String cost = "话费清单:市话费76.89元, 长度话费167.38元, 短信费12.68元";
Scanner reader = new Scanner(cost);
reader.useDelimiter("[^1234567890.]+");
double sum = 0;
while(reader.hasNext())
{
try{
double price = reader.nextDouble();
sum += price;
}
catch(InputMismatchException exp)
{
System.out.println(reader.next());
}
}
System.out.println("sum=" + sum);
} }
运行结果如下所示:

因为是以非数字为分隔符,所以reader中存储的就是数字。所以语句System.out.println(reader.next());没有任何输出。
review12的更多相关文章
随机推荐
- Linux彻底删除mysql5.6
查看安装的mysql组件 rpm -qa | grep -i mysql mysql57-community-release-el6-8.noarch mysql-community-common-5 ...
- 地址栏输入url按回车之后发生了什么
地址栏输入url按回车之后发生了什么? 1.我们在浏览器中输入网址 2.浏览器到DNS查找域名对应的IP地址 3. 浏览器打开TCP连接(默认端口为80),向该IP的服务器发送一条HTTP请求,如果浏 ...
- pmd 使用笔记
pmd是一块开源的代码静态分析工具,使用java编写,可以自定义规则来进行自己想要的分析.pmd可以单独使用,也可以作为idea.eclipse的插件使用.它的规则分为xpath规则,和java规则. ...
- yum命令的实例
1) 自定义yum仓库:createrepo 2) 自定义repo文件 3) 使用yum命令安装httpd软件包(在这里需要强调一点,本身执行yum.repos.d时,文件里面是有自带的yum源的,需 ...
- 斯坦福大学Andrew Ng - 机器学习笔记(7) -- 异常检测
大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...
- Junit单元测试注入spring中的bean(转载)
转载自:http://blog.csdn.net/cy104204/article/details/51076678 一般对于有bean注入的类进行方法单元测试时,会发现bean对象并没有注入进来,对 ...
- java动手动脑解析
1. 类是java的最小单位,java的程序必须在类中才能运行 2. java函数加不加static有何不同 java中声明为static的方法称为静态方法或类方法.静态方法可以直接调用静态方法,访问 ...
- 前端基础之css样式(选择器)
一.css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,对html标签的渲染和布局 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如 二.c ...
- myql命令
ALTER TABLE 表名 DROP COLUMN 列名#删除某一列
- Linux常用的指令(...编辑文件+保存)
mkdir命令用来创建目录 1 mkdir filename touch命令有两个功能:一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来:二是用来创建新的 ...