zoukankan      html  css  js  c++  java
  • 20155204第12周课堂实践总结

    20155204第12周课堂实践总结

    一、实践内容及步骤

    1. 教材代码检查

    解决方法:这部分没什么难度,主要是检查之前有没有敲好的代码,改动部分输出内容就好

    1. 在IDEA中以TDD的方式对String类和Arrays类进行学习,测试相关方法的正常,错误和边界情况
    • String类
      • charAt
      • split
    • Arrays类
      • sort
      • binarySearch

    解决方法:

    • 既然利用TDD的方式,我们就要从测试类来着手
    • charAt:我们先来查一下API看看它的用法
      ,我们从这里得知它需要的参数类型,返回的数据类型,以及需要注意的第一个索引为0,可以开始编写断言式了,
     assertEquals('c',string.charAt(2));
    

    string是我定义的一个字符串。

    • split:也是先看API
      它返回的是字符串数组,然而断言式没法比较数组,所以我就用这样的方法来比较
        String[] ss = string.split(":");
        assertEquals("abcde",ss[0]);
    
    • sort:
      sort的用法比较多,我们用到的是比较简单的,直接排序、比较即可。
        Arrays.sort(i);
        assertEquals(2,i[1]);
    
    • binarySearch:
      这是二分法查找的方法,需要注意的就是使用前要使用sort方法排序,具体实现如下
    Arrays.sort(i);
            assertEquals(1,Arrays.binarySearch(i,2));
    
    • 几个测试类写好了,剩下的就是怎么重写上面的四个方法使得我们可以调用他们。对于String的两个方法,我们可以创建一个String对象,利用它来调用两个方法,对于Arrays的两个方法,我们只需要在编写方法的时候定义合适的变量即可。具体如下
    import java.util.*;
    import java.lang.*;
    
    public class Myutil {
        String string = new String();
    
        public char charAt(int n) {
            return string.charAt(n);
        }
    
        public String[] split(String regex) {
            return string.split(regex);
        }
    
        public void sort(int[] a) {
             Arrays.sort(a);
        }
    
        public void binarySearch(int[] a,int key){
            Arrays.binarySearch(a,key);
        }
    

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

       1 import java.util.*;
      2
      3 public class MySort {
      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         Integer [] tmp = new Integer [toSort.length];
     16         for(int i=0; i<tmp.length; i++)
     17             tmp[i] = ...;
     18
     19         Arrays.sort(tmp);
     20
     21         System.out.println("After sort:");
     22
     23         for(int i=0; i<tmp.length; i++)
     24             for(int j=0; j<toSort.length; j++)
     25                 if(...)
     26                    System.out.println(toSort[j]);
     27     }
     28 }
    
    

    解决方法:
    整个代码的目的是将一个字符串数组的排序前和排序后的结果输出,而排序则需要按照字符串数组中元素的某一部分作为标准。需要补充的地方是第17行和25行,17行需要将字符串数组中选出的排序标准部分选出,传给tmp数组,25行需要根据tmp的顺序来匹配toSort数组的完整字符串内容然后输出。通过利用split方法可以很好的完成这件事情,实现如下。

    17 tmp[i] = new Integer(Integer.parseInt(toSort[i].split(":")[3]));
    25  if (tmp[i] == Integer.parseInt(toSort[j].split(":")[3]))
    

    二、问题及解决

    • 问题1:断言式无法处理数组,该怎么测试split方法?
    • 解决方法:先用一个数组接受split的结果,然后分别从原数组和该数组取出一部分进行比较。具体代码上方有。
    • 问题2:不能定义Arrays的对象,该怎么在主类中写它的方法?
    • 解决方法:重写Arrays的方法时直接在传入参数处定义就好。Arrays不像String。

    三、心得与体会

    这周的实践没做出来感到很绝望,在课下花了功夫去学习,发现确实是没有学到位,有很多混淆的地方,下面就要做第四次实验了,要抓住最后的机会。

  • 相关阅读:
    007 使用SpringMVC开发restful API五--异常处理
    006 使用SpringMVC开发restful API四--用户信息的修复与删除,重在注解的定义
    033 Url中特殊字符的处理
    005 使用SpringMVC开发restful API三--处理创建请求
    004 使用SpringMVC开发restful API二--编写用户详情
    003 使用SpringMVC开发restful API--查询用户
    032 报错
    018 easygui的使用
    017 异常的处理
    012 pandas与matplotlib结合制图
  • 原文地址:https://www.cnblogs.com/20155204wh/p/6850744.html
Copyright © 2011-2022 走看看