A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gay世嘤雄 初级黑马   /  2018-8-28 21:31  /  1022 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

     作为一个编程初学者,看到班级的大神学习的效率和方法,让我在平时的学习中感到了很大压力。为了更快的入门,老师同学的建议都是多练习,因为在他们看来,"键盘敲烂月薪过万"是每个人程序员都应该遵守的铁律.的确,作为初学者,练习固然重要,但是比起代码的练习,我觉得更重要的是逻辑思维的练习.java基础的东西很好理解,白天听不懂的内容,可以通过课下查资料看视屏完全可以弄懂.但是,一时半会弄不明白的是逻辑思维上的东西.因为有一句话叫做"少见多怪,见多不怪".见得东西多了,自然就不会大惊小怪.其实很多时候重要的不是代码的速度敲得有多块,代码敲了有多少,而是逻辑思维练习多少才是最重要的,比如,前几天老师上课讲到数组有很多小细节没有讲到,但是完全可以通过自己课下的练习来获得新的知识和思维.我在课下时遇到过这样的一个问题:首先输入几个数字作为int数组的元素,然后再输入一个角标删除某一个位置的元素.刚看到时我一脸茫然,数组的删除?没学过啊,怎么写?不会.然而,在同学的提示下我很快完成了这个所谓的难题:他说:数组的删除其实就是把后面的一个角标覆盖掉前面一个数字,这样看来就很简单了.方法如下
[AppleScript] 纯文本查看 复制代码
package myday06;
import java.util.*;

public class ArrayDelete{
    public static void main(String args[]){
        System.out.println("请用键盘输入5个数:");
        int [] array =new int[10];
        Scanner sc=new Scanner(System.in);

        //通过键盘向数组输入数
        for(int i=0;i<array.length-5;i++){
            array[i]=sc.nextInt();
        }
        //遍历数组
        System.out.print("原数组为:");
        for(int a:array){
            System.out.print("  "+a);
        }
        //删除在指定位置的数字
        System.out.println("\n输入你要删除的位置: 范围在0---"+(array.length-1));
        int index=sc.nextInt();

        delete(index,array);//调用delete方法
        //删除之后的遍历
        System.out.println("删除之后的遍历:");
        for(int i=0;i<array.length;i++){
            System.out.print("  "+array[i]);
        }
    }
    //数组的特性是,一旦初始化,则长度确定,所以要删除数组中元素,并且长度也随着删除而改变,则要重新建立数组
    /**
     *删除方式1
     */
    public static int[] delete(int index, int array[]) {
        //数组的删除其实就是覆盖前一位
        int[] arrNew = new int[array.length - 1];
        for (int i = index; i < array.length - 1; i++) {
            array[i] = array[i + 1];
        }
        System.arraycopy(array, 0, arrNew, 0, arrNew.length);
        return arrNew;
    }

    /**
     *删除方式2
     */
    public int[] delete2(int index, int array[]) {
        //数组的删除其实就是覆盖前一位
        int[] arrNew = new int[array.length - 1];
        for (int i = 0; i < array.length - 1; i++) {
            if (i < index) {
                arrNew[i] = array[i];
            } else {
                arrNew[i] = array[i + 1];
            }
        }
        return arrNew;
    }
}
其实,两种方法的做法的偶濮水一样的因为数组的长度不能改变,所以为了防止有一个位置的元素是空的,将其放入了一个新的数组,这样看起来就像是直接删除了一个元素.所以,在平时的学习中最主要的是根据特性来完成需要的操作

1535462083(1).jpg (26.89 KB, 下载次数: 3)

1535462083(1).jpg

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马