【EduCoder】集合 泛型 异常 练习——拆分字符串

任务描述

本关任务:根据要求实现字符串的拆分,并将得到的子串进行数值化转换,转换中利用异常机制进行处理,剔除非数值型的子串,对剩余数值子串求和并输出

相关知识

为了完成本关任务,你需要掌握:如何将字符串进行分割。

String.split()拆分字符串
lang包String类的split()方法

public String[] split(String regex) regex正则表达式
public String[] split(String regex,int limit)
//limit参数控制应用的次数,影响所得数组的长度
拆分示例:

public class SplitDemo {
    public static void main(String[] args) {
        String Str="Harry James Potter";
        String[] StrArray=Str.split("\\s");//"\\s"表示空格
        //也可以来" "来进行拆分  String[] StrArray=Str.split(" ");
        for(String str:StrArray){
            System.out.println(str);
        }
}

运行结果

Harry
James
Potter

如何用StringTokenizer类拆分字符串
引入util包下的StringTokenizer类

拆分原理
StringTokenizer拆分字符串的原理是通过生成StringTokenizer对象,然后运用对象的属性来处理字符串拆分的。

public StringTokenizer(String str,String delim,boolean returnDelims)
public StringTokenizer(String str,String delim)
public StringTokenizer(String str)
//参数str:表示要解析的字符串,delim:分隔符 returnDelims:是否将分隔符作为标记返回
拆分示例:

import java.util.StringTokenizer;
public class StringTokenDemo {
    public static void main(String[] args) {
        String Str="Harry James Potter";
        StringTokenizer strToken=new StringTokenizer(Str," ");
        String s;
        //当有拆分的子字符串时,输出这个字符串
         while(strToken.hasMoreTokens()){
           s=strToken.nextToken());
           System.out.println(s);
        }
    }
}

运行结果

Harry
James
Potter
本关编程要求

1、将第一个串利用String类的split()方法以“.”进行拆分,拆分后得到各String子串,输出。
2、第二个串:利用StringTokenizer类的方法实现拆分。以空格" "进行拆分。拆分后获得多个子串。
3、利用Double类的转换函数将其中的数值型子串转成double数值。如字符串“123”转为double型123.0
4、对转换过程中发生的异常进行处理,剔除非数值型的子串。
5、剩余的全部是转换后得到的数,求其和并输出。

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
用String.split()方法将字符串如“aaa.bbb.ccc”以“.”进行拆分

用StringTokenizer类将字符串如“1.2 3.1 ee 1”以空格进行拆分,并将此字符串中的非数值子串,如"e","mm"等去掉后返回,返回的每一个子串均为转换后的Double型变量。
计算并输出转换后的字串和。

转换函数用Double类的parseDouble(String str);

如:
double x;
x=Double.parseDouble(s);
其中,s是一个数字字符串,如"3.14"

如一组测试输入(第一个串,用“.”隔开。输入第二个串–数字字符串,用空格隔开。)

12.32
1.2 3.1 ee 1

测试输出:

12
32

1.2
3.1
1.0


sum=5.3000

第二组测试输入:

2000.9.1
1.5 .2 w q r t 3.1415926

测试输出:

2000
9
1

1.5
0.2
3.1415926
sum=4.8416

输入:

aaa.bbb.ccc
1 2 a 3 4

输出:

aaa
bbb
ccc

1.0
2.0
3.0
4.0
sum=10.0000

提示:
“|”、“.”、“*”、“+”、“\”等不是有效的模式匹配规则表达式,是转义字符,使用split()方法时必须得加"\"才行。

开始你的任务吧,祝你成功!

答案程序
package step1;

import java.util.List;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class SplitDemo{
    //使用String.split()分割
    public static List<String> splitPartition(String str){
        ArrayList<String> list= new ArrayList<String>();
        //Your code here
        for (String s:str.split("\\.")) {
            list.add(s);
        }

        return list;
    }

    //使用StringTokenizer类进行分割
    public static List<Double> tokenPartition(String str){
        ArrayList<Double> listTemp=new ArrayList<Double>();
        //Your code here
        StringTokenizer strToken = new StringTokenizer(str, " ");
        String s;
        double d, sum=0;
        while (strToken.hasMoreTokens()){
            s = strToken.nextToken();
            try {
                d = Double.parseDouble(s);
                listTemp.add(d);
                sum += d;
            }
            catch (NumberFormatException e){ }
        }
        return listTemp;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值