初识一维数组

本文介绍了Java中数组的基本概念,包括数组的作用、声明、分配空间、赋值方法以及如何计算平均分。同时详细解释了数组的使用步骤和常见错误,如数组大小未指定、数组越界和数组创建与赋值语句分离等。
摘要由CSDN通过智能技术生成
初识数组
        为什么需要数组
            Java考试结束后,老师给张浩分配了一项任务,
            让他计算全班(30人)Java课程考试的平均分
                int stu1 = 95
                int stu2 = 89
                int stu3 = 79
                int stu4 = 64
                int stu5 = 76
                int stu6 = 88
                                30个变量
                                太繁琐
                                不利于数据处理
                ......
                avg = stu1+stu2+stu3+stu4+stu5...+stu30)/30:
        数组是一个变量,存储相同数据类型的一组数据
        声明个变量就是在内存空间划出-块合适的空间
        声明一个数组就是在内存空间划出一串连续的空间
        
        什么是数组
            数组是一个变量,存储相同数据类型的一组数据
            数组基本要素
                标识符
                数组元素
                元素下标:从0开始
                元素类型    
            数组长度固定不变,避免数组越界
            数组中的所有元素必须属于相同的数据类型    
            
    总结
        数组
            在内存空间划出一串连续的空间
        数组基本要素
            标识符:驼峰命名规则
            数组元素
            元素下表:从0开始,数组中的每个元素都可以通过下标来访问
            元素下标元素类型:数组中所有元素相同数据类型
        
        
    数组的使用
        如何使用数组
            使用数组四步走
                1.声明数组 int[ ] a;
                2.分配空间 a = new int[5];
                3.赋值     a [0]= 8;
                4.处理数据 a [0] = a[0] * 10;
            声明数组
                声明数组:告诉计算机数据类型是什么
                    int[ ] score1;//Java成绩
                    int score2[ ];//Python成绩
                    String[ ]name;//学生姓名
                语法    
                    数据类型 数组名[];
                    数据类型[] 数组名;
                声明数组时不规定数组长度
            分配空间
                分配空间: 告诉计算机分配几个连续的空间
                    scores = new int[30l;
                    avgAge = new int[6];
                    name = new String[30];
                声明数组并分配空间语法
                    数据类型[] 数组名 = new 数据类型[大小];
                数组元素根据类型不同,有不同的初始值
            数组赋值
                方法1:边声明边赋值
                    int[ ] scores = {89, 79, 76};
                    int[ ] scores = new int[]{89, 79,76};不能指定数组长度
                方法2:动态地从键盘录入信息并赋值
                    Scanner input = new Scanner(System.in);
                    for(inti= 0;i< 30;i++)
                        scoresli] = input.nextlnt():
                    }
            案例
                //计算张浩班级30人Java平均分
                import java.util.Scanner;
                //记录张浩班30个同学的成绩
                double[] scores = new double[30];
                double avg = 0; //平均分
                double sum = 0; //同学的成绩总分数
                Scanner input = new Scanner(System.in);
                
                //使用传统for为数组元素赋值
                //使用for循环来遍历数组的元素下标:下标0-数组长度-1
                for(int i=0;i<scores.length;i++){
                    System.out.print("请输入第"+(i+1)+"个同学的Java成绩:");
                    scores[i] = input.nextDouble();
                }
                
                //使用增强型for(foreach):迭代为数组元素操作
                for(double score:scores){  //double score = scores[0];double score = scores[1];....
                    sum+=score;
                }
                
                avg = sum / scores.length;
                System.out.println("张浩班级同学的Java平均分为:"+avg);    
                
    总结
        数组使用四步
            声明数组
            分配空间
            赋值
            处理数据
            
            
            
    数组使用常见错误
         常见错误1
            public class ErrorDemo1{
                public static void main(String[]args){
                    int[] score -(new int[];
                    score[0] = 89;
                    score[1] = 63;
                    System.out.println(score[o]);
                }
            }
                编译出错,没有写明数组的大小
            常见错误2
                int[ ] scores = new int[2];
                scores[0] = 90;
                scores[1] = 85;
                scores[2] = 65;
                System.out.println(scores[2]);
                编译错误,数组越界
            常见错误3
                int[ ] score = new int[5]
                ;score = {60, 80, 90, 70, 85};
                int[ ] score2;
                score2 ={60, 80, 90, 70, 85);
                编译出错,创建数组并赋值的方式必须在一条语句中完成
            常见错误3
                public class ErrorDemo1 {
                    public static void main(String[ ] args){
                        int[ ]scores = new int[6];
                        forint score:scores){
                            score=9;
                        }
                        System.out.println(scores[0]);
                    }
                }
                foreach是用来遍历数组的,不能用来对数组赋值
                
    总结
        数组与内存的存放关系,助于加深数组使用的认识
        数组常见错误不止讲解过的几种,养成积累错误、记录解决方案的好习惯
        
        
        
        
    数组使用练习
        有一个数列:8,4,2,1,23,344,12
            循环输出数列的值
            求数列中所有数值的和
            猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数
            //猜数游戏
                //声明数组存储数据
                int[] list = new int[]{8,4,2,1,23,344,12};
                //循环输出数组元素的值,并求和
                int sum = 0; //总和
                for(int num : list){
                System.out.println(num);
                sum += num;
            }
            System.out.println("数组元素总和为:"+sum);
            //猜数
            Scanner input = new Scanner(System.in);
            System.out.print("请输入您要猜测的数字:");
            int guess = input.nextInt();
            //猜测结果
            boolean isCorrect = false;
            
            for(int num : list){
                if(num == guess){
                    //猜测正确
                    isCorrect = true;
                    break;
                }
            }
            
            if(isCorrect){
                System.out.println("恭喜您,您猜的数字在数列中存在!");
            }else{
                System.out.println("对不起,您猜的数字不在数列中!");
            }
            
        数组存储5笔购物金额,在控制台输出并计算总金额
            //购物金额结算
            Scanner input = new Scanner(System.in);
            System.out.println("请输入会员本月的消费记录");
            //list记录用户的5笔消费金额
            double[] list = new double[5];
            for(int i=0;i<list.length;i++){
                System.out.print("请输入第"+(i+1)+"笔会员的消费金额:");
                list[i]=input.nextDouble();
            }
            //输出购物金额及总金额
            double sum = 0; //总金额
            System.out.println("序号\t\t金额(元)");
            for(int i=0;i<list.length;i++){
                System.out.println((i+1)+"\t\t"+list[i]);
                sum += list[i];
            }
            System.out.println("总金额\t\t"+sum);
            
    总结
        数组可结合循环等内容使用
        数组的使用可通过程序调试加深理解
        数组的使用贵在练习、多敲多练
        
        
    
    求数组的最值
        从键盘输入本次Java考试五位学生的成绩,求考试成绩最高分
            根据打捷台的规则
                max = stul[0] ;
                if (stu[1]>max ){
                    max=stu [1] ;
                }
                if (stu[2]>max ){
                    max=stu [2] ;
                }
                if (stu[3]>max ){
                    max=stu [3] ;
                }
                使用循环解决
            //获取五位学生Java考试最高分
                //学生考试成绩数组的声明及赋值
                int[] scores = new int[5];
                Scanner input = new Scanner(System.in);
                for(int i = 0;i<scores.length;i++){
                    System.out.print("请输入第"+(i+1)+"个同学的考试成绩:");
                    scores[i] = input.nextInt();
                }
                
                //求数组中的最大值
                int max = scores[0];
                for(int i = 1;i<scores.length;i++){
                    if(scores[i]>max){
                        max = scores[i];
                    }
                }
                System.out.println("此次考试成绩最高分为:"+max);
                
        求出4家店的最低手机价格
            步骤
                1.定义数组存储价格,并利用循环输入
                2定义变量min保存当前的最低价
                3将min和数组中的其余元素依次比较
                //获取4家店的最低手机价格
                 
                //手机价格数组的声明及赋值
                double[] prices = new double[4];
                Scanner input = new Scanner(System.in);
                for(int i = 0;i<prices.length;i++){
                    System.out.print("请输入第"+(i+1)+"家店的手机价格:");
                    prices[i] = input.nextDouble();
                }
                
                //求数组中的最小值
                double min = prices[0];
                for(int i = 1;i<prices.length;i++){
                    if(prices[i]<min){
                        min = prices[i];
                    }
                }
                System.out.println("4个手机店铺最低价格为:"+min);
                
    数组中插入元素
        有一组学员的成绩199,85,82,63,601,
        将它们按降序排列要增加一个学员的成绩,将它插入成绩序列,并保持降序
        分析
            将成绩保存在数组中
            通过比较找到插入位置
            该位置元素往后移一位
            插入新成绩
            
        //在已知降序的数组正确位置插入一个特定数字
        //通过数组存储原来的5个成绩
            //数组长度是固定的,一旦定义无法修改
            //int[] list = {99,85,82,63,60};
            int[] list = new int[6];
            list[0] = 99;
            list[1] = 85;
            list[2] = 82;
            list[3] = 63;
            list[4] = 60;
            //获取用户要插入的数值
            Scanner input = new    Scanner(System.in);
            System.out.print("请输入您要插入的数值:");
            int num = input.nextInt();
            //找到num要插入的位置index:找到num比数组中元素(第一个)大的位置
            //当用户插入一个比原数组所有数都小的数值时,如下代码就有问题:
            //int index= 0;
            //课下思考:如果index = -1有什么问题?提示:程序调试,下标越界
            int index = list.length-1;
            for(int i=0;i<list.length;i++){
                if(num>list[i]){
                    index = i;
                    break;
                }
            }
            //原index位置及以后的所有数据要整体往后挪
            for(int i=list.length-1;i>index;i--){
                list[i]=list[i-1];  //当list.length-1:5   list[5]=list[4]以此类推
            }
            //在index位置将num插入进来
            list[index] = num;
            System.out.println("插入成绩的下标是:"+index);
            System.out.println("插入数值后的最后成绩是:");
            for(int listNum :list){
                System.out.print(listNum+"\t");
            }
            
总结
    数组有何作用?
        使用数组有哪些步骤?
        如何遍历一个数组?
        简述求数组最大值的实现思路是怎样的?
        简述如何在一个特定排序的数组中插入特定元素?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值