数组

作者: 陈皮丨阿四 | 来源:发表于2018-10-29 19:18 被阅读0次

    数组定义方式:

    public class ArrayDemo1 {

    public static void main(String[] args) {

    // 数组:一个容器,能够放一组数据

    // 特点(缺点):1.必须是同类型;2.固定长度

    // 声明方法1:数组类型 数组名[] = new 数组类型[长度];数组类型[] 数组名 = new 数组类型[长度];

    int arr1[] = new int[5];// 默认保存了5个0

    // String str[] = new String[5];// 默认保存了5个null

    // boolean b[] = new boolean[5];// 默认保存了5个false

    // 通过下标值去访问数组元素:长度为n的数组,下标值范围0-->n-1

    arr1[0] = 120;

    arr1[1] = 121;

    arr1[2] = 122;

    arr1[3] = 123;

    arr1[4] = 124;

    // arr1[5] = 125;// 数组越界

    // System.out.println(arr1[0]);

    // 声明方法2:数组类型 数组名[] = new 数组类型[]{元素1,元素2,....};

    int arr2[] = new int[] {120,121,122,123,124};

    System.out.println(arr2[3]);

    // 声明方法3:数组类型 数组名[] = {元素1,元素2,....};

    int arr3[] = {120,121,122,123,124,125};

    // 数组的length属性

    System.out.println(arr3.length);

    // 字符串的length()方法

    System.out.println("hello".length());

    }

    }

    数组常见操作--遍历

    public class ArrayDemo2 {

    public static void main(String[] args) {

    // 数组的遍历(取到数组中每一个元素)

    // length遍历次数-->数组名[下标]

    int arr[] = {5,7,23,98,111,13,77};

    // 遍历方法1:

    // for(int i = 0;i < arr.length;i++) {

    // int num = arr[i];

    // System.out.println(num);

    // }

    // 遍历方法2:增强for循环

    for(int num:arr) {

    System.out.println(num);

    }

    String str[] = {"ab","cd","ef","g"};

    for(String s:str) {

    System.out.println(s);

    }

    }

    }

    一维数组内存模型

    二维数组内存模型

    二维数组的定义及遍历

    public class ManyArrayDemo1 {

    public static void main(String[] args) {

    // 二维数组

    // int arr1[][] = {{1,2,3},{4},{5,6,7,8}};

    // System.out.println(arr1.length);// 5

    // 第二种声明方式

    // int[][] arr2 = new int[3][];

    // arr2[0] = new int[]{1,2,3};

    // arr2[1] = new int[]{4,5,6};

    // arr2[2] = new int[]{7,8,9,10,11,12};

    // 二维数组的访问

    // System.out.println(arr2[2][2]);

    // 二维数组遍历

    // for(int i = 0;i < arr1.length;i++) {

    // for(int j = 0;j < arr1[i].length;j++) {

    // System.out.print(arr1[i][j]+" ");

    // }

    // System.out.println();

    // }

    }

    }

    排序(冒泡,选择)

    public class ArrayDemo4 {

    public static void main(String[] args) {

    // 1.冒泡排序

    // int[] arr={6,3,8,2,9,1};

    // for(int i = 0;i < arr.length - 1;i++) {

    // for(int j = 0;j < arr.length - i - 1;j++) {

    // if(arr[j] < arr[j+1]) {

    // int temp;

    // temp = arr[j];

    // arr[j] = arr[j+1];

    // arr[j+1] = temp;

    // }

    // }

    // }

    // for(int num:arr) {

    // System.out.println(num);

    // }

    // 2.选择排序

    int[] arr={6,3,8,2,9,1};

    // 1-1 3,6,8,2,9,1  1-2 3,6,8,2,9,1 1-3 2,6,8,3,9,1 1-4 2,6,8,3,9,1 1-5 1,6,8,3,9,2

    // 2-1 1,6,8,3,9,2  2-2 1,3,8,6,9,2 2-3 1,3,8,6,9,2 2-4 1,2,8,6,9,3

    for(int i = 0;i < arr.length - 1;i++) {

    for(int j = i + 1;j < arr.length;j++) {

    if(arr[i] > arr[j]) {

    int temp;

    temp = arr[i];

    arr[i] = arr[j];

    arr[j] = temp;

    }

    }

    }

    for (int num : arr) {

    System.out.println(num);

    }

    }

    }

    快速排序及数组拷贝

    public class ArrayDemo5 {

    public static void main(String[] args) {

    int arr[] = {7,5,3,2,1,9,10};

    Arrays.sort(arr);// 快速排序--升序

    for(int num:arr) {

    System.out.println(num);

    }

    }

    }

    public class ArrayCopyDemo1 {

    public static void main(String[] args) {

    // 数组的复制

    int source[] = {1,2,3,4,5,6};

    int dest[] = {7,8,9,10,11,12,13,14,15};

    /*

    * source:源数组

    * srcPos:源数组中的起始位置

    * dest:目标数组

    * destPos:目标数组中的起始位置

    * length:要复制的数组元素的个数

    */

    System.arraycopy(source, 1, dest, 3, 3);

    for(int num:dest) {

    System.out.print(num+" ");

    }

    }

    }

    课外习题

    1.模拟35选7

    public class Practice5 {

    public static void main(String[] args) {

    // 模拟35选7(没有循环嵌套)

    boolean bool[] = new boolean[35];// 35个false

    for(int i = 0;i < 7;i++) {

    // 生成一个随机数

    int random = (int)(Math.random()*35+1);// 5

    if(bool[random-1]) {

    i--;

    continue;

    }

    bool[random-1] = true;

    }

    // for(boolean b:bool) {

    // System.out.print(b+" ");

    // }

    for(int i = 0;i < bool.length;i++) {

    if(bool[i]) {

    System.out.println(i+1);

    }

    }

    }

    }

    2.编写一个简单程序,要求数组长度为5,分别 赋值10,20,30,40,50,在控制台输出该数组的值。

    public class HomeWork1 {

    public static void main(String[] args) {

    // 1、编写一个简单程序,要求数组长度为5,分别赋值10,20,30,40,50,在控制台输出该数组的值。

    int arr[] = {10,20,30,40,50};

    for(int num:arr) {

    System.out.println(num);

    }

    }

    }

    3.给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组 ,先排序,然后输出排序后的数组的值。

    public class HomeWork3 {

    public static void main(String[] args) {

    // 3、给定一个有9个整数(1,6,2,3,9,4,5,7,8)的数组,先排序,然后输出排序后的数组的值。

    int arr[] = {1,6,2,3,9,4,5,7,8};

    for(int i = 0;i < arr.length - 1;i++) {

    for(int j = i + 1;j < arr.length;j++) {

    if(arr[i] < arr[j]) {

    int temp;

    temp = arr[i];

    arr[i] = arr[j];

    arr[j] = temp;

    }

    }

    }

    for(int num:arr) {

    System.out.println(num);

    }

    }

    }

    4.在控制台上输入一个正整数,代表数组长度,然后向数组中输入每一个元素,然后在控制台上遍历出来。

    public class Practice8 {

    public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    System.out.println("请输入要输入几个数字:");

    int num = scan.nextInt();

    int arr[] = new int[num];

    int index = 0;

    for(int i = 0;i < num;i++) {

    System.out.println("请输入第"+(i+1)+"个数字");

    arr[index] = scan.nextInt();

    index++;

    }

    for(int n:arr) {

    System.out.print(n+" ");

    }

    }

    }

    5.利用数组完成此题:控制台输入一年当中的第几月多少号,输出这天是这一年的多少天。

    public class Practice9 {

    public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);

    System.out.println("year:");

    int year = scan.nextInt();

    System.out.println("month:");

    int month = scan.nextInt();

    System.out.println("date:");

    int date = scan.nextInt();

    int feb = 28;

    // 闰年29天

    if(year%4==0 && year%100!=0 || year%400==0) {

    feb = 29;

    }

    int days[] = {31,feb,31,30,31,30,31,31,30,31,30,31};

    int sum = 0;

    for(int i = 0;i < month - 1;i++) {

    sum = sum + days[i];

    }

    System.out.println("第"+(sum+date)+"天");

    }

    }

    6.随机生成100个1到10的随机数,计算这些数字出现的概率。

    public class Test {

    public static void main(String[] args) {

    int arr[] = new int[10];

    for(int i = 0;i < 100;i++){

    int random = (int)(Math.random()*6)+1;

    arr[random-1]++;

    }

    for(int i = 0;i < arr.length;i++){

    System.out.println(i+1+"出现的概率是"+arr[i]+"%");

    }

    }

    }

    相关文章

      网友评论

          本文标题:数组

          本文链接:https://www.haomeiwen.com/subject/oxditqtx.html