本文共 1352 字,大约阅读时间需要 4 分钟。
创建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/