20155306 第十二周课堂实践

20155306 第十二周课堂实践

内容一:

  • 修改教材P98 Score2.java, 让执行结果数组填充是自己的学号:
    提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的不给成绩。
import java.util.Arrays;
public class Score2 {
    public static void main(String[] args){
        int [] scores=new int[10];
        for (int score : scores){
            System.out.printf("%2d",score);
        }
        System.out.println();
        Arrays.fill(scores,20155306);
        for(int score:scores){
            System.out.printf("%7d ",score);
        }
    }
}

运行截图如下:

内容二:

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

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

  • String类

    -charAt

    -split

  • Arrays

    -sort

    -binarySearch

代码如下:

  • charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法,charAt()方法返回指定索引位置的字符值。索引范围为0~length()-1.
  • Java split用法 java.lang.string.split split 方法 将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
  • sort() 方法用于对数组的元素进行排序.
  • binarySearch()为折半检索,返回搜索值的索引;否则返回-1或者"-"(插入点)。注意:必须在进行此调用之前对数组进行排序。
@Test

    public void charAt() throws Exception {
        assertEquals('c',s1.charAt(2));
        assertEquals('e',s1.charAt(4));
    }

    @Test
    public void split() throws Exception {
        assertEquals(s4,s2.split(","));
    }

    @Test
    public void sort() throws Exception{
        Arrays.sort(s3);
        assertEquals(4,s3[3]);
    }

    @Test
    public void binarySearch() throws Exception{
        int a;
        Arrays.sort(s3);
        a = Arrays.binarySearch(s3,3);
        assertEquals(a,2);
    }
}

运行截图如下:

内容三:

模拟实现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);
        System.out.println();

        int[] arr = new int[toSort.length];
        for (int i = 0; i < toSort.length; i++) {//将原数组每行以 : 分隔开,存放于数组tmp中
            String[] tmp = toSort[i].split(":");
            arr[i] = Integer.parseInt(tmp[3]);//将第四列放到先前建立的数组 arr 中
}

            Arrays.sort(arr);//对第四列数字进行排序

            System.out.println("After sort:");
            for (int i = 0; i < arr.length; i++) {//遍历arr中元素
                for (int j = 0; j < toSort.length; j++)//遍历原数组各行
                    if (arr[i] == Integer.parseInt((toSort[j].split(":"))[3])) {//当数组tosort中第四列元素与arr中元素相等时,输出 tosort
                        System.out.println(toSort[j]);//输出以arr中元素为顺序的tosort数组
                    }
                }

            }
        }


运行截图如下:

码云链接

内容四:实践问题

问题一:在进行单元测试时,出现下图问题:

解决方法:将结果"a","b","c","d","e",重新定义为一个字符数数组 String s4[] = {"a","b","c","d","e"}; ,把s4作为结果,则运行成功。

posted on 2017-05-14 21:04  20155306  阅读(160)  评论(0编辑  收藏  举报

导航