20155339《java程序设计》第十二周课堂实践总结

Arrays和String单元测试

在IDEA中以TDD的方式对String类和Arrays类进行学习

  • 测试相关方法的正常,错误和边界情况

  • String类

    • charAt
    • split
  • Arrays类

    • sort
    • binarySearch

代码的码云链接

  • 核心部分代码及注释
@Test
        public void Arraytest()
        {
            int a[]={8,5,4,7};
            Arrays.sort(a);//对字符数组进行排序,并返回到原数组中
            this.assertEquals(8,a[3]);//排序后应为4,5,7,8,因此a[3]应为8.
            this.assertEquals(0,Arrays.binarySearch(a,4));//用二分法进行搜索,并返回数组中的下标
            this.assertEquals(-2,Arrays.binarySearch(a,6));//若没有则返回-1,或者-按升序应该插入的位置

        }
    @Test
    public void Stringtest()
    {
        String e = new String("2015,5339,pczm");
        assertEquals('2',e.charAt(0));//返回所指定下标(此处为0)所对应的元素
        assertEquals('4',e.charAt(0));
        String[] s=e.split(",");//用“,”进行分割
        assertEquals("5339",s[1]);
    }
  • 运行结果截图

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

1 import java.util.*;
  2
  3 public class MySort1 {
  4     public static void main(String [] args) {
  5         String [] toSort = {"aaa:10:1:1",
  6                             "ccc:30:3:4",
  7                             "bbb:50:4:5",
  8                             "ddd:20:5:3",
  9                             "eee:40:2:20"};
 10
 11         System.out.println("Before sort:");
 12         for (String str: toSort)
 13                     System.out.println(str);
 14
 15         Arrays.sort(toSort);
 16
 17         System.out.println("After sort:");
 18         for( String str : toSort)
 19             System.out.println(str);
 20     }
 21 }

代码的码云链接

  • 代码及注释
import java.util.*;

public class MySort1 {
    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);
        Arrays.sort(toSort);

        System.out.println("After sort:");
        for (String str : toSort)
            System.out.println(str);
        System.out.println();
        int[] tmp=new int [toSort.length];//定义一个与tosort数组的行数相同的数组。
        for(int i=0;i<toSort.length;i++) {
            String[] a = toSort[i].split(":");//每行都用:分割并将分割后的结果存放于a数组中。
            tmp[i] = Integer.parseInt(a[3]);//取出需要按哪一列排序的那一列,此处由题意取出第三列并将字符串剖析为int型
        }
        Arrays.sort(tmp);//取出的一列排序
        for(int i=0;i<tmp.length;i++)//遍历tmp数组
        {
            for(int j=0;j<toSort.length;j++)//遍历toSort数组的行
            {
                String[] a = toSort[j].split(":");//按行用:分割toSort数组,存于a数组
                if(tmp[i]==Integer.parseInt(a[3]))//比较已排序的tmp数组以及a数组剖析后的结果
                {
                    System.out.println(toSort[j]);//相同时输出原数组,因为tmp数组以按指定列排序,所以完成整个数组按指定列排序
                }
            }
        }
    }
}
  • 结果截图

课堂上未能提交的原因

  • 首先是掌握的还不够透彻,对于代码的编写还需要有个较长的思考时间。
  • 其次一直在切换网页还有加水印还要上复制到项目文件夹传到码云,一紧张,手抖老是点到别的地方,再点回去打开就比较慢,每次编出来加水印就已经停止了,有点来不及。
posted @ 2017-05-13 16:05  20155339平措卓玛  阅读(235)  评论(0编辑  收藏  举报