数组实用类Arrays和枚举类型Enum

来源:互联网 发布:哈佛计算机编程课程 编辑:程序博客网 时间:2024/05/22 03:31

一、数组使用类Arrays

1.在java.util包中,Arrays提供了一系列静态方法,帮助操作数组。以下是较常用的一些方法。(1) equals方法,比较两个数组参数是否相同。(2) fill方法,向数组中填充数据参数。(3) binarySearch方法,查找数组中元素的值与给定数据相同的元素。(4) sort方法,将数组按升序排列。(5) copyOfRange方法,将数组的指定范围复制到一个新数组。(6) toString方法,返回指定数组内容的字符串表示形式。    代码示例如下:
/*** Arrays的一系列静态方法*/import java.util.Arrays;public class ArraysTest2{    public static void main(String[] args){        //基本数据类型、字符串        String[] arr = new String[5];        Arrays.fill(arr,0,3,"董帅");//s填充范围是0-2,不包含3        for(String s : arr){            System.out.println(s + ",");        }        System.out.println();        //引用数据类型        ArraysTest2[] arr2 = new ArraysTest2[5];        Arrays.fill(arr2,2,4,new ArraysTest2());//填充范围是2-3,不包含4        for(ArraysTest2 a : arr2){            System.out.println(a + ",");        }        //查找数组中元素的值与给定数据相同的元素        int[] arr3 = {2,6,5,63,2550,2346,34122};        System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");//查找范围是0-2,返回的是数组下标        Arrays.sort(arr3);//将数组升序排序        System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");        for(int i : arr3){            System.out.println(i);        }        int[] arr4 = {1,4,23,3,54,32,4645};        int[] arr5 = Arrays.copyOf(arr4,5);//赋值到新数组,范围是0-4        for(int i : arr5){            System.out.print(i + ",");        }        System.out.println();        int[] arr6 = Arrays.copyOfRange(arr4,2,5);//赋值到新数组,范围是2-4        for(int i : arr6){            System.out.print(i + ",");        }        System.out.println();        System.out.print(Arrays.toString(arr4));//返回数组的字符串表示形式    }}

二、枚举类型Enum
枚举类型enum是在JDK5.0加入的类型,类型安全,使枚举数值定义更加紧凑有效。
1.遍历枚举类型

/*** 枚举类型enum*/public class EnumTest{    public enum StudentGrade{        A,B,C,D,E,F    };    public static void main(String[] args){        System.out.println("学生平均成绩:" + StudentGrade.A);        for(StudentGrade sg : StudentGrade.values()){//遍历枚举类型,values()方法返回了一个独立的StudentGrade实例构成的数组            System.out.println("The Grade is:" + sg);        }        StudentGrade s = StudentGrade.valueOf("E");//以字符串的形式返回某一个元素的值。        System.out.println("your grade is:" + s);    }}
2.在switch中使用枚举类型
/*** 枚举类型enum,在switch语句中使用*/public class EnumSwitch{    public enum Car{A,B,C,D,E,F,G,H};    public static void main(String[] args){        Car c = Car.G;        switch(c){            case A:                System.out.println("360");                break;            case B:                System.out.println("小米");                break;            case C:                System.out.println("华为");                break;            case D:                System.out.println("苹果");                break;            default:                System.out.println("HTC");                break;        }    }}

三、几道练习题
(1)求二重循环所有元素的和

/*** 求二位数组所有元素的和*/public class Task140_3{    public static void main(String[] args){        int[][] a = {{11,23,},{234,12,312,53},{423,53,123,65432}};        int sum = 0;        for(int i = 0;i <= a.length - 1;i++){            for(int j = 0;j <= a[i].length - 1;j++){                sum += a[i][j];            }        }        System.out.println(sum);    }}
    (2) 判断一个单词是否在数组里面
/***判断一个单词是否在数组里面*/import java.util.Scanner;import java.util.Arrays;public class Task140_2{    public static void main(String[] args){        System.out.print("Please input a word:");        Scanner sc = new Scanner(System.in);        String s = sc.next();        String[] str = {"dong","shuai","brilliant","awesome","shackboey","skydosh"};        int b = Arrays.binarySearch(str,s);        if(b >= 0){            System.out.println("Here am I!");        }else{            System.out.println("what the hell!");        }    }}
    (3) 随机输出一个字符串
/***   随机输出字符串*/import java.lang.Math;public class Task140_4{    public static void main(String[] args){        String[] arr = {"dong","shuai","zangyan","mudi","wangchao","jiaru"};        System.out.println(arr[2]);        int i = (int)(Math.random() * arr.length);        System.out.println(arr[i]);    }}
    (4)生成100个随机数,放到数组中,然后排序输出
/*** 生成100个随机数,放在数组中,然后排序输出*/import java.util.*;public class Task140_5{    public static void main(String[] args){        int[] arr = new int[100];        for(int i = 0;i < 100;i++){            Random rnd = new Random();            arr[i] = (int)(rnd.nextInt(Integer.MAX_VALUE) + 1);            System.out.print(arr[i] + ",");        }        System.out.println();        Arrays.sort(arr);        for(int j = 0;j < 100;j++){            System.out.print(arr[j] + " ");        }    }}
    (5) 统计字符串中的英文字母、空格、数字和其它字符的个数。
/*** 统计字符串中各类型字符的个数*/import java.util.*;import java.io.*;//import java.io.InputStream;public class Task140_6{    public static void main(String[] args) throws Exception{        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        System.out.println("please input character string:");        String s = br.readLine();        //Task140_6 t = new Task140_6();        countSum(s);    }    public static void countSum(String s){        int alphabet = 0;        int blankspace = 0;        int number = 0;        int other = 0;        for(int i = 0;i < s.length();i++){            char c = s.charAt(i);            if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') alphabet++;            else if(c == ' ') blankspace++;            else if(c >= '0' && c <= '9') number++;            else other++;        }        System.out.println("字母个数为:" + alphabet);        System.out.println("空格个数为:" + blankspace);        System.out.println("数字个数为:" + number);        System.out.println("其他字符个数为:" + other);    }}
0 0