20155308 2016-2017-2《Java程序设计》课堂实践项目

20155308 2016-2017-2《Java程序设计》课堂实践项目

String类的使用

  • 模拟实现Linux下Sort -t -k 2的功能。参考 Sort的实现。

  • 实验重点:
    在java.lang包中有String.split()方法,它可以把字符串分割为好几个小的字符串。

    1、“.”和“|”都是转义字符,必须得加"\";
      如果用“.”作为分隔的话,必须是如下写法:
    String.split("\."),这样才能正确的分隔开,不能用String.split(".");
    如果用“|”作为分隔的话,必须是如下写法:
    String.split("\|"),这样才能正确的分隔开,不能用String.split("|");

    2、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用
      String.split("and|or");

    3、public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。
      此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中
      的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。

    4、public string[] split(string regex)
      这里的参数的名称是 regex ,也就是 regular expression (正则表达式)。这个参数并不是一个简单的分割用的字符,而是一个正则表达式

  • 实践内容:

模拟实现Linux下Sort -t : -k 2的功能。参考 Sort的实现。提交码云链接和代码运行截图。

import java.util.*;

public class MySort {
    public static void main(String [] args) {
        String [] toSort = {"aaa:10:1:1", 
                            "ccc:30:3:4",
                            "bbb:50:4:5",
                            "ddd:20:5:3",
                            "eee:40:2:20"};
        
        System.out.println("Before sort:");
        for (String str: toSort)
            System.out.println(str);

        //sort
        List<String> list = new ArrayList();
        for (String str: toSort)
            list.add(str);

        Collections.sort(list);
        
        System.out.println("After sort:");
        for( String str : list)
            System.out.println(str);
    }
}
  • 修改代码
/**
 * Created by hwf on 2017/5/10.
 */
import java.util.*;
public class MySort  {
    public static void main(String[] args) {
        String[] toSort = {"aaa:10:1:1",
                "ccc:30:3:4",
                "bbb:50:4:5",
                "ddd:20:5:3",
                "eee:40:2:20"};
        String[] str;
        int[] tmp = new int[toSort.length];
        int num;
        System.out.println("Before sort:");
        for (String st: toSort)
            System.out.println(st);
        for(int i=0;i<toSort.length;i++) {
            str = toSort[i].split(":");
            tmp[i] = Integer.parseInt(str[2]);
        }
        Arrays.sort(tmp);
        System.out.println("After sort:");
        for(int i=0;i<tmp.length;i++)
            for(int j=0;j<toSort.length;j++) {
                str = toSort[j].split(":");
                num = Integer.parseInt(str[2]);
                if(num==tmp[i]) {
                    System.out.println(toSort[j]);
                }
            }
    }
}
  • 实验结果

代码中所遇到的问题:

  • 问题一:究竟怎么运用split将数组拆分?
  • 解决:split("😊;
  • 问题二:怎么进行第三列的排序?(if语句中怎么填写?)
  • 解决:先拆分:str = toSort[j].split("😊;然后if语句:if(num==tmp[i]),执行通过那么就将toSort数组中对应的那个值赋值给新的那个数组,进行输出
posted @ 2017-05-10 11:16  郝文菲20155308  阅读(116)  评论(0编辑  收藏  举报