关于Mysort实验的补发博客

关于本次课后的一些话

关于这次课上的关于sort -nk 2 -t: sort.txt的实验没能在课上做出,有自身的知识不够,没能灵活运用所学知识,以及在当时课上走了会神,回过头来已经不知道该干些什么了,以至于在哪里手忙脚乱脑子一片空白。总之,你投入多少,就能获得多少,学与不学只在那一念之间。

我的实验过程

  • 先弄清楚老师给的模板
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
        int [] k3 = new int[toSort.length];
        for (int i = 0 ; i < toSort.length ; i ++){
            String [] tmp = toSort[i].split(":");
            k3[i] = .....
        }
        Arrays.sort(k3);
        System.out.println("After sort:");
        Arrays.sort(k3);
        for (int i = 0 ; i < k3.length;i++){
            for (int j = 0 ; j <toSort.length;j++)
                if (k3[i] == )  {
      System.out.println(toSort[j]);
                }}
           }
      }

我认为最关键的代码有三:

  • 1.String [] tmp = toSort[i].split(":")
  • 2.k3[] = ...
  • 3.if (k3[i] == ...)

首先,数组tmp是会随着循环而改变的。

    for(int i = 0;i < toSort.length;i++){
        String[] tmp = toSort[i].split(":")
    }
    /* i=0 , tmp = {aaa , 10 , 1 , 1}
       i=1 , tmp = {ccc , 30 , 3 , 4}
       i=2 , tmp = {bbb , 50 , 4 , 5}
       ....
    */

其次,实验的目的是为了达到类似命令:sort -nk 2 -t:的效果所以有k3 = { 10 , 30 , 50 , 40 , 20}

    k3[i] = Integer.parseInt(tmp[1]);
  • 程序的最后一步中定义了一个循环,而循环中又套用了一个循环,而这么做的目的为:
    for (int i=0;i<k3.length;i++){
    //从k3[0]循环到k3[k3.lenrth-1]
         for (int j = 0 ; j <toSort.length;j++)
         //每个k3[i]与从toSort[0]到toSort[toSort.length-1]的每个元素一一匹配
                if (k3[i] == Integer.parseInt((toSort[j].split(":"))[1])) {
                    System.out.println(toSort[j]);
                }
    }
  • 最后要解决的问题是如何匹配:

我首先想到的是

    k3[i] == Integer.praseInt(toSort[j].subString(4,6))

但后来我认为此方法具有一般性,如果toSort数组中的元素为:aa:10:1:1那么程序就达不到要求。

突发奇想,有了以下尝试:

k3[i] == Integer.praseInt((toSort[j].split(":"))[1])

通过尝试我知道toSort[j].split(":")这是一个数组那么它的第二个元素就是我们相比对的数。

我的代码

    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:");
        String [] tmps = toSort[0].split(":");
        //System.out.println(tmps[1]);
        for (String str: toSort)
        System.out.println(str);

        int [] k3 = new int[toSort.length];

        for (int i = 0; i < toSort.length;i ++){
            String [] tmp = toSort[i].split(":");
           // System.out.println(tmp[0]);
            k3[i] = Integer.parseInt(tmp[1]);
        }
           // System.out.println(Arrays.toString(toSort[0].split(":")));

           // System.out.println(k3[0]);
           Arrays.sort(k3);

            /*for (int a = 0 ; a<k3.length;a++){
                System.out.println(k3[a]);
            }
            */
        //System.out.println(Integer.parseInt((toSort[0].split(":"))[1]));
        System.out.println("After sort:");
        Arrays.sort(k3);
        for (int i = 0 ; i < k3.length;i++){
            for (int j = 0 ; j <toSort.length;j++)
                if (k3[i] == Integer.parseInt((toSort[j].split(":"))[1])) {
                    System.out.println(toSort[j]);
                }}

    }}

posted @ 2017-05-06 01:15  Wb同学在此  阅读(143)  评论(1编辑  收藏  举报