• 20155218第三次课堂实践


    课堂实践

    课堂笔记:

    1. vim下的sort排序

    1. sort -t :-k tosort.txt(正序排序)
    2. sort -t :-rk tosort.txt(反序排序)
    3. sort -t :-nrk tosort.txt(第几列排序)
    

    2.Java String.split用法小结

    在java.lang包中有String.split()方法,返回是一个数组

    1、如果用“.”作为分隔的话,必须是如下写法,String.split("."),这样才能正确的分隔开,不能用String.split(".");

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

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

    课堂实践代码:

    模拟实现Linux下Sort -t : -nk 4的功能:

    参考代码:

    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] = new Integer(Integer.parseInt(toSort[i].split(":")[3]));
     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(Integer.parseInt(toSort[j].split(":")[3]) == tmp[i].intValue())
     26                     System.out.println(toSort[j]);
     27     }
     28 }
    

    我的错误:

    String []tmp2=new  String[toSort.length];
    
                     for (int i = 0;i<toSort.length;i++){
    
                            tmp2 [i]=toSort[i].split(":");
    
    
                         tmp[i]=Integer.parseInt(tmp2[i][1]);
    
                     }
    

    我把tmp2定义为了一个一维数组,看到参考代码后才认识到,split切割后的每一段都是string类型,所以需要一个二维数组。

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

    1. 代码:

    /**
     * Created by xuzhihan on 17/5/10.
     */
    import junit.framework.TestCase;
    import junit.framework.TestResult;
    import org.junit.Test;
    
    import java.util.Arrays;
    
    public class test extends TestCase {
        public static String[] ss = new String[20];
        @Test
        public void  testsort()
        {
            int [] arr={1,2,5,4};
            Arrays.sort(arr);
            assertEquals(5,arr[3]);
        }
        @Test
        public void  testcharAt()
        {
            String a1="hello world ";
            assertEquals('h',a1.charAt(0));
            assertEquals('e',a1.charAt(1));
        }
        @Test
        public void  testsplit()
        {
            String a1="hello:world";
            ss=a1.split(":");
            assertEquals("hello",ss[0]);
            assertEquals("world",ss[1]);
        }
        @Test
        public void  testbinaryseach()
        {
            int a[] = new int[] {1, 3, 4, 6, 8, 9};
            assertEquals(-4,Arrays.binarySearch(a, 5));
            assertEquals(0,Arrays.binarySearch(a, 1));
        }
    
    }
    

    2.疑惑:
    为什么在binarySearch查找一个不存在的数会返回一个负值。
    解答:
    Arrays.binarySearch() 产生的返回值就要大于或等于0。否则,它产生负返回值,表示若要保持数组的排序状态此元素所应该插入的 位置。这个负值的计算方式是:

    -(插入点)-1

    “插入点”是指,第一个大于查找对象的元素在数组中的位置,如果数组中所有的元素值都小于要查找的对象,“插入点”就等于Arrays.size()。

  • 相关阅读:
    [YTU]_2417 C语言习题 字符串长度
    最小生成树学习笔记
    后缀数组学习笔记
    网络流的几个小优化
    面向对象
    Manacher(马拉车)学习笔记
    EXKMP学习笔记QAQ
    GDOI DAY1游记
    GDOI--DAY2 游记
    caioj:1348: [NOIP普及组2012]质因数分解 C++
  • 原文地址:https://www.cnblogs.com/xzh1996/p/6840170.html
Copyright © 2020-2023  润新知