当前位置: 移动技术网 > IT编程>开发语言>Java > 荐 大数据——一维数组

荐 大数据——一维数组

2020年07月17日  | 移动技术网IT编程  | 我要评论

理解数组

在Java中,数组是用来存储一组相同类型数据的数据类型。当数组初始化完毕后,java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将之固定,此时数组的长度就不能再发生改变。即使数组中没有保存任何数据,数组所占据的空间依然存在。(现在所说的数组暂时都是一维数组)

定义数组

在Java中,定义数组的语法有如下两种。
数据类型[] 数组名=new 数据类型[数组长度];
或者:
数据类型 数组名[]=new 数据类型[数组长度]
定义数组时一定要指定数组名和数组类型。
必须书写“[]”,表示定义了一个数组,而不是一个普通的变量。
“[数组长度]”决定连续分配的空间的个数,通过数组的length属性可获取此长度。
数组的类型数据用于确定分配的每个空间的大小。

        //声明
        int[] a;
        String b[];
        double []c;
        //分配空间,使用new关键字来分配空间,
        //new关键字是java中优先级最高的。
        a=new int[5];
        b=new String[6];
        c=new double[4];
        

数组元素分配的初始值
1.数组元素的类型是基本类型中的整数类型(byte、short、int和long),则数组元素的值是0。
2.数组元素的类型是基本类型中的浮点类型(float、double),则数组元素的值是0.0。
3.数组元素的类型是基本类型中的字符类型(char),则数组元素的值是’\u0000’。
4.数组元素的类型是基本类型中的布尔类型(boolean),则数组元素的值是false。
5.数组元素的类型是引用类型(类、接口和数组),则数组元素的值是null。

数组元素的表示和赋值

由于定义数组时内存分配的是连续的空间,所以数组元素在数组里顺序排列编号,该编号即元素下标,它标明了元素在数组中的位置。首元素的编号规定为0,因此,数组的下标依次为0、1、2、3、4······依次递增,每次增长数是1。数组中的每个元素都可以通过下标来访问。
获得数组元素的语法格式如下。
数组名[下标值]

        //赋值
        a[0]=10;
        a[1]=14;
        a[2]=18;
        a[3]=24;
        a[4]=33;
        a[5]=45;

数组的初始化

所谓的数组的初始化,就是在定义数组的同时一并完成赋值的操作。
数组初始化的语法格式如下、
数据类型[]数组名={值1,值2,值3,······,值n};
或者:
数据类型[]数组名=new 数据类型[]{值1,值2,值3,······,值n};

        //声明的同时分配空间
        char[] ch=new char[10];
        float f[]={11.1f,22.2f};//声明、分配空间并赋值
        int []d=new int[]{1,2,3};

遍历数组

在编写程序时,数组和循环往往结合在一起使用,可以大大的简化代码,提高程序编写效率。通常使用for循环遍历数组。

示例一

Text1:计算30位同学的平均分,同时打印每一个分数。

public class Text1 {
    public static void main(String[] args) {
        int[] scores=new int[30];
        //使用随机数对数组赋值
        for (int i = 0; i <30 ; i++) {
            scores[i] = (int) (Math.random() * 80 + 20);
        }
        //遍历查看数组中每一个元素
        System.out.print("[");
        for (int i = 0; i <scores.length ; i++) {
            if (i == scores.length - 1) {
                System.out.println(scores[i]);
                break;
            }
            System.out.print(scores[i]+", ");
        }
        System.out.print("]");
        //计算平均分
        double sum=0;
        for (int i = 0; i <scores.length ; i++) {
            sum+=scores[i];
        }
        System.out.println("总分为:" + sum);
        System.out.println("平均分为:"+sum/scores.length);
        //增强for的用法
      /*  System.out.print("[");
        for (int a:scores) {
            System.out.println(a+",");
        }
        System.out.println("]");*/
    }
}

输出结果:
在这里插入图片描述

示例二

Text2:有一个数列:8,4,2,1,23,344,12
(1)循环输出数列的值。
(2)求数列中所有数值的和。
(3)猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数 。

import java.util.Scanner;
public class Text2 {
    public static void main(String[] args) {
        int[] a={8,4,2,1,23,344,12};
        int sum=0;
        for (int i = 0; i <a.length ; i++) {
            System.out.print(a[i]+"\t");
            sum+=a[i];
        }
        System.out.println();
        System.out.println("所有数值和是:"+sum);
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num=sc.nextInt();
        int i = 0
        for (; i <a.length ; i++) {
            if(num==a[i]){
                System.out.println("包含这个数:"+num);
                break;
            }
            }if(i==a.length){
            System.out.println("不包含这个数");
        }
    }
}

输出结果:
在这里插入图片描述

示例三

Text3:从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分。

import java.util.Scanner;
public class Demo3 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int[] scores=new int[5];
        for (int i = 0; i <scores.length ; i++) {
            System.out.println("请输入第" + (i + 1) + "个值");
            scores[i]=sc.nextInt();
        }
        for (int i = 0; i <scores.length ; i++) {
            System.out.print(scores[i]+",");
        }
        System.out.println();
        //求最大值
        int max=scores[0];
        for (int i = 0; i <scores.length ; i++) {
            if(scores[i]>max){
                max=scores[i];
            }
        }
        System.out.println("最大值为:"+max);
    }
}

输出结果:
在这里插入图片描述

示例四

Text4:求出4家店的最低手机价格。
在这里插入图片描述
步骤:
1.定义数组存储价格,并利用循环输入
2.定义变量min保存当前的最低价
3. 将min和数组中的其余元素依次比较

public class Text3 {
    public static void main(String[] args) {
        int[] a = {3000, 3150, 2900, 2950};
        for (int i = 0; i < a.length; i++) {
            System.out.println("第"+(i+1)+"店的价格:"+a[i]);
        }
        System.out.println();
        int min = a[0];
        for (int i = 0; i < a.length; i++) {
            if (a[i] < min) {
                min = a[i];
            }
        } System.out.println("最低的价格是"+min);
    }
}

输出结果:
在这里插入图片描述

示例五

Text5:数组存储5笔购物金额,在控制台输出并计算总金额
在这里插入图片描述

import java.util.Scanner;
public class Text4 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
            System.out.println("请输入会员本月的消费记录");
            double[] money=new double[5];
            double sum=0;
        for (int i = 0; i < money.length; i++) {
            System.out.print("请输入第" + (i + 1) + "笔购物金额:");
            money[i] = sc.nextDouble();
            sum=sum+money[i];
        }
        System.out.println("序号"+"\t"+"\t"+"金额(元)");
        for (int i = 0; i < money.length; i++) {
            System.out.println((i+1)+"\t"+"\t"+money[i]);
        }
        System.out.println("总金额"+"\t"+"\t"+sum);
    }
}

输出结果:
在这里插入图片描述

增删改查

数组范围内:
增:数组的定义、赋值
删:程序运行结束
改:数组元素的重新赋值,或者地址改变
查:查看数组的地址和元素的值
长度范围外的:长度要变化(新的数组)
增:元素个数的增加
删:元素个数的减少
改:修改其中的元素

数组增加元素

Text6:有一组学员的成绩{99,85,82,63, 60},将它们按降序排列。要增加一个学员的成绩,将它插入成绩序列,并保持降序。
程序分析:1、将成绩保存在数组中。2、通过比较找到插入位置。3、该位置元素往后移一位。4、插入新成绩。

import java.util.Arrays;
import java.util.Scanner;
public class Demo4 {
    public static void main(String[] args) {
        int[] a={99,85,82,63,60};
        int[] b=new int[6];
        for (int i = 0; i < a.length; i++) {
            b[i]=a[i];
        }
        System.out.println(Arrays.toString(b));//把数组转成String字符串
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num=sc.nextInt();
        boolean isInsert=false;
        for (int i = b.length-2; i >=0 ; i--) {//从后向前遍历
            if(num>b[i]){
                b[i+1]=b[i];//下标后移
            }else{
                b[i+1]=num;
                isInsert=true;
                break;
            }
        }if(isInsert==false){//该数最大,放在首位
            b[0]=num;
        }
        System.out.println(Arrays.toString(b));
    }
}

输出结果:
在这里插入图片描述

数组删除元素

Text7:有一组学员的成绩{99,85,82,63, 60},输入一个下标,删除一个成绩。

import java.util.Arrays;
import java.util.Scanner;
public class Demo5 {
    public static void main(String[] args) {
        int[] a={99,85,82,63,60};
        int[] b=new int[4];
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要删除的下标:");
        int num=sc.nextInt();
        int j=0;
        for (int i = 0; i < a.length; i++) {
            if(i==num)continue;;
            b[j]=a[i];
            j++;
        }
        System.out.println(Arrays.toString(b));
    }
}

输出结果:
在这里插入图片描述

本文地址:https://blog.csdn.net/dsjia2970727/article/details/107346190

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网