4.数组

作者: 唐英钏 | 来源:发表于2018-01-02 20:08 被阅读0次

数组基本知识点

  • 数组是一个变量,存储相同数据类型的一组数据,数组中的所有元素必须属于相同的数据类型
  • 声明数组就是在内存空间画出一串连续的空间
  • 数组基本要素
    --1.标示符:数组的名称,用来区分不同的数组
    --2.数组元素:向数组中存放的数据
    --3.元素下标:对数组元素进行编号,从0开始
    --4.元素类型:数组元素的数据类型
  • 数组的长度固定不变,避免数组越界
  • 声明数组并且分配空间
    --数据类型[ ] 数组名 = new 数据类型[大小]
int[] array = new int[];
  • 赋值
    --1.边声明边赋值
int[] score = {77,88,99};
int[] score  = new int[] {77,88,99};

--2.从键盘录入信息并赋值

Scanner input = new Scanner(System.in);
for (inti= 0;i < 10 ;1++)
{
score[i] = input.nextInt();
}

练习题

对数组进行声明和赋值

  • 计算5个学员的平均分
public class linshi {
    public static void main(String[] args) {
        int[] array = new int[5];
        int total=0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入5人成绩");
        for (int i = 0;i < array.length;i++)
        {
            array[i] = scanner.nextInt();
            total = total + array[i];
        }
        System.out.println("平均成绩是:" + (double)total/array.length);
    }
}

含有判断的数组

  • 有一个数列:8,4,2,1,23,344,12;循环输出数列的值;求数列中所有数值的和;猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
public class linshi {
    public static void main(String[] args) {
        int[] array = {8,4,2,1,23,344,12};
        int total = 0;
        for (int i = 0;i < array.length;i++)
        {
            System.out.println(array[i]);
            total = total + array[i];
        }
        System.out.println("数列中所有数值的和" + total);
        Scanner scanner = new Scanner(System.in);
        System.out.println("请从键盘中任意输入一个数据");
        int number = scanner.nextInt();
        int i = 0;
        for ( i = 0;i < array.length;i++)
        {
            if (number == array[i])
            {
                System.out.println("包含此数");
                break;
            }
        }
        //说明循环了一圈都没有发现与用户输入的值相等
        if (i==array.length)
        {
            System.out.println("不包含此数");
        }
    }
}

数组排序

  • 循环录入5位学员成绩,进行升序排列后输出结果
    --Arrays.sort(数组名);是岁数组进行升序排列
public class linshi {
    public static void main(String[] args) {
        int[] grade = new int[5];
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入五位学员成绩");
        for (int i = 0; i < grade.length; i++)
        {
            grade[i] = scanner.nextInt();
        }
        Arrays.sort(grade);
        System.out.println("按升序排列");
        for (int i = 0; i < grade.length; i++)
        {
            System.out.println(grade[i] + " ");
        }
    }
}

查找数组中的最大值

  • 从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
public class linshi {
    public static void main(String[] args) {
        int[] grade = new int[5];
        int max = 0;
        Scanner scanner  = new Scanner(System.in);
        System.out.println("请输入java考试五位学生的成绩");
        for (int i = 0; i < grade.length; i++)
        {
            grade[i] = scanner.nextInt();
            if (max < grade[i])
            {
                max = grade[i];
            }
        }
        System.out.println("考试成绩最高分是" + max);
    }
}

数组插入算法

  • 有一组学员的成绩{99,85,82,63, 60},将它们按升序排列。要增加一个学员的成绩,将它插入成绩序列,并保持升序。



    --分析:
    1.将成绩序列保存在长度为6的数组中
    2.通过比较找到插入位置
    3.将该位置后的元素后移一个位置
    4.将增加的学员成绩插入到该位置

public class linshi {
    public static void main(String[] args) {
       int[] grade ={99,85,82,63,60};
       Arrays.sort(grade);
       for (int i = 0;i < grade.length;i++)
       {
           System.out.println(grade[i]);
       }
       Scanner scanner = new Scanner(System.in);
       System.out.println("请输入新增成绩:");
       int input = scanner.nextInt();
       int pos = 0;//用户新输入的数在新数组中的位置
//遍历原数组,找到要插入的位置
       for (int i = 0;i < grade.length;i++)
       {
           if (input <= grade[i])
           {
               pos = i;
               System.out.println("插入的下标是" + pos);
               break;
           }
       }
        int[] grade1 = new int[6];
//拷贝旧数组从0开始,到pos位置的数到对应新数组同样下标中
       for (int i = 0;i < pos;i++)
       {
           grade1[i] = grade[i];
       }
        grade1[pos] = input;
//拷贝旧数组从pos+1开始, 到旧数组长度位置的数到对应新数组同样下标中
        for (int i = pos + 1;i < grade1.length ;i++)
        {
            grade1[i] = grade[i - 1];
        }
        System.out.println("插入后的成绩序列是:" );
        for (int i = 0;i < grade1.length;i++)
        {
            System.out.println(grade1[i] + " ");
        }
    }
}

字符逆序输出

  • 将 一组乱序的字符进行排序,进行升序和逆序输出



    --分析:
    1.创建数组存储原字符序列
    2.利用Array类的sort( )方法对数组进行排序,并循环输出
    3.从最后一个元素开始,将数组中的元素逆序输出

public class linshi {
    public static void main(String[] args) {
       char[] charArray = {'a','c','u','b','e','p','f','z'};
       System.out.print("原字符序列:");
       System.out.println(charArray );//字符类型的数组没循环操作进行输出时不能加其他修饰,例如:System.out.print( charArray[i] + "\t");
       Arrays.sort(charArray);
       System.out.print("升序排列后:");
       System.out.println(charArray);
       System.out.print("逆序输出为:");
       for (int i =charArray.length-1;i>=0;i--)
        {
            System.out.print( charArray[i] + "\t");
        }
    }
}
  • 向上一个练习中得到的升序字符序列中插入一个新的字符,要求插入之后字符序列仍保持有序



字符串数组

  • 定义一个字符串数组,查找某个字符串在数组中出现的次数
public class linshi {
    public static void main(String[] args) {
        String[] array = {"大乔","貂蝉","昭君","小乔"};
        String meinv ="小乔";
        int count = 0;
//count计数,meibv在数组中出现的次数
        for (int i = 0;i < array.length;i++)
        {
            if (array[i].equals(meinv)) {
                count++;
            }
            System.out.println(count);
        }
    }
}

相关文章

网友评论

      本文标题:4.数组

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