java数组练会了这几个题目,就安心继续往前学吧,少年

本文回顾了数组操作的基础,如求和、最值查找,以及自动生成数组、猜数字游戏和随机排名。重点讨论了作者在数组操作中遇到的错误,如边界问题和逻辑失误,以及解决过程中的反思。通过实例演示和错误剖析,帮助读者提升对数组编程的理解和实践能力。
摘要由CSDN通过智能技术生成

这么是我在对数组学习完之后,练习三天都重复练习的数组编程题目,有写注释,同时也会在下面分析一些重做还是出错的情况,很垃圾,大家一起努力:
目录如下:

数组求和

        int [] number ={62,64,88,54,95};
        int sum = 0;
        //挨个访问数组,以此叠加
        for (int i = 0; i < number.length; i++) {
//            int length = number[i];
              sum +=number[i];
        }
        System.out.println(sum);

数组求最值

          int [] score = {92,98,91,94};
          int j =1;        //j=i+1;
//        int maxscore=0;
           //三元运算符的赋值,真,则前,是score[i];假,后,则score[j]
//        for (int i = 0; i < score.length; i++) {         //score.lemgth=4,i(max)=3,
//            maxscore =score[i]>score[j]?score[i]:score[j];
//            j +=1;
//        }
//       System.out.println(maxscore);
        第二种方法
        int max = score[0];
        //for运行,进行多次比较,同时将大数重新赋值给max;
        for (int i = 1; i < score.length; i++) {
            if (score[i]>max){
                max = score[i];
            }
        }
             System.out.println(max);

自动生成数组

        Random r = new Random();
        int [] maxscore = {10};
        //完成自动生成数组
        for (int i = 0;i<5;i++){
            int score = r.nextInt(5)+80;
            maxscore[i] = score;
        }

猜数字游戏

        // 猜中提示“运气不错,猜中了”并输出第一次猜中的位置。同时告知其它五个数
        //分析:随机五个数---使用动态数组;死循环--进行不断猜测
        Random ra = new Random();
        Scanner sc = new Scanner(System.in);
        int [] array = new int [5];
        for (int i= 0;i<=4;i++){
            int j = ra.nextInt(20)+1;
            array [i] = j;
        }
        while (true){
            System.out.println("请输入你猜的数字");
            int guess = sc.nextInt();
            for (int i = 0; i < array.length; i++) {
                if(guess==array[i]){
                    System.out.println("恭喜你才对了");
                    break;
                }
                else {
                    System.out.println("抱歉。不对噢");
                    break;
                }
            }
            for (int i = 0; i < array.length; i++) {
                    System.out.print(array[i]+"\t");
            }
            }

随机排名

这是定义一个动态数组的时候,在随机变量中,变量出现重复值的情况被忽略;

        int [] data = new int [5];
        //生成数组
        for (int i =0 ;i<data.length;i++){
            System.out.println("请输入第:"+(i+1)+"成员的学号");
            int name = sc.nextInt();
            data[i] = name;
        }
        Random ra = new Random();
//       测试数组
//        for (int i = 0; i < data.length; i++) {
//            System.out.print(data[i]+"\t");
//        }
		//交换值
        for (int i=0;i<data.length;i++){
            int nums = ra.nextInt(data.length);
            int temp = data[i];
            data[i]=data[numer];
            data[numer]= temp;
        }
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+"\t");
        }

错误1

请添加图片描述
描述:这是我熟练之后的又一次复习练习,原本的错误结果是这个样子:1,2的代码是我用来检擦的,A部分代码是出错的地方。
在这里插入图片描述
对数组中的元素换位置的三行代码,不小心就打错了。可敲错导致功能不一样,我开始以为跟静态和动态数组有关,然后开始对比两种数组的代码执行循序(这个地方有点折磨,先用大脑捋一下,捋不清就用笔画出来,化完发现差不多呀,最后才想到我可以用输出语句来检擦一些值得变化嘛)最后才发现是变化原因背后的逻辑,才意识到是自己敲错了代码。真的是,花了30多分钟。菜是原罪呀!

冒泡排序

        for(int i =0;i< score.length-1;i++){
            //定义一个循环,控制每次循环中对比的次数。
            //j等于最大值时,j+1超出length范围==score,length-1-i控制j最大值是max-1;也就是比较的次数
            for(int j =0;j< score.length-1-i;j++){
            //换位置
                if(score[j]> score[j+1]){
                    int temp = score[j];
                    score[j]= score[j+1];
                    score[j+1]=temp;
                }
            }
        }
        for (int i = 0; i < score.length; i++) {
            System.out.print(score[i]+"\t");
        }

错误分享:

Index 5 out of bounds for length 5,最后的值超出了5

这是将j和i的大小比较一下的原因,哎,第一次出现这个错误的时候,我还用了英语字典,不知道几个单词意思,尴尬。

总结

因为是练习了好几次,所以一些常见的小错误就不记得了,就只记得在数组边界问题上,犯了不是一次错误。总是在思考如何敲的时候,对这个点总是忽略,哎!菜是原罪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值