字符串分割 异常 泛型 练习

package step1;
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.StringTokenizer;
//拆分字符串
public class SplitDemo{
    public static List<String> splitPartition(String str){
        ArrayList<String> list = new ArrayList<String>();
        String[] sp = str.split("\\.");   //转义字符加上"//"
        int i = 0;
        for(String s:sp){
            list.add(i++,s);
        }
        return list;

    }
//List类型,利用异常处理try{}catch(){},干掉非数值型字符串
/*
法一:还是利用split()函数实现拆分
法二:利用StringTokenizer实现(效率高一些)
 */
    public static List<Double> tokenPartition(String str){
        ArrayList<Double> listTemp = new ArrayList<Double>();
        //StringTokenizer strToken = new StringTokenizer(str," ");
        //String s;
        String []s1 = str.split(" ");
        for(String s2:s1){
            try{
                Double d = Double.parseDouble(s2);
                listTemp.add(d);
            }catch (Exception e){
                continue;
            }
        }
//        while(strToken.hasMoreTokens()){
//            s = strToken.nextToken();
            Double d = Double.parseDouble(s);
            listTemp.add(d);
//            //防止你在运行时输入非数值型字符串,所以必须加入以下异常处理
//            try{
//                Double d = Double.parseDouble(s);
//                listTemp.add(d);
//            }catch (Exception e){
//                continue;
//            }
//        }
        return listTemp;
    }
}
package step1;
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Test{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        SplitDemo demo=new SplitDemo();
        String str1=sc.nextLine();
        String str2=sc.nextLine();

        //第一个串str1调用SplitDemo类的splitPartition()拆分函数拆分后,通过一个List返回,输出。
        List<String> list1=demo.splitPartition(str1);
        for(String s:list1){
            System.out.println(s);
        }
        System.out.println();

        //第二个串str2拆分后,去掉非数值串,通过List对象返回。对List中的数值相加并输出:
        List<Double> list2=demo.tokenPartition(str2);//拆分函数tokenPartition()中可去掉非数值子串,是通过异常处理实现的

        double sum=0;
        for (int i = 0; i < list2.size(); i++) {
            System.out.println(list2.get(i));
            sum=sum+list2.get(i);
        }
        System.out.printf("sum=%.4f\n",sum);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值