美文网首页
00.两周预科学习重点

00.两周预科学习重点

作者: 席沐清风 | 来源:发表于2017-12-11 21:25 被阅读0次

    面相对象思想

    万物皆对象,在写程序前应该先找出该对象应该具有的属性(名词)方法(动词)。
    写一个方法要从宏观到微观的写,先写输入输出,在用文字描述具体步骤,最后再来写细节的实现。

    俄罗斯轮盘设计思想

    • 分成三个类Player、Gun、Game
    • Gun。属性:弹夹(使用Boolean类型数组),弹针位置。方法:开枪、装子弹
    • Player。属性:玩家姓名。方法:射击
    • Game。属性:Player[],Gun。方法:star()

    商品类别选择

    Categrory类。属性name、Category[] children;

    class Category {
        private String name;//类名
        private Category[] children;//下级类可用一个数组装载
    
    }
    
    public class Work {
        public static void main(String[] args) {
            
            Category[] main = getCas(new String[]{"电子产品","书籍","家具"});
            
            //电子产品-下级分类 
            Category[] children0 = getCas(new String[]{"电脑","手机","相机"});
            children0[0].setChildren(getCas(new String[]{"Dell","Lenovo"}));
            children0[1].setChildren(getCas(new String[]{"小米","华为"}));
            children0[2].setChildren(getCas(new String[]{"佳能","尼康","莱卡"}));
            main[0].setChildren(children0);
    
    }
    //使用字符串数组给category数组赋值并返回
        static Category[] getCas(String[] str) {
            Category[] children = new Category[str.length];
            for(int i = 0; i<str.length; i++) {
                children[i] = new Category(str[i]);
            }
            return children;
        }
    

    多维数组的构造

    String str[][][][] = {{{{"电子产品"}},{{"电脑"},{"Dell","Lenovo"}},{{"手机"},{"小米","华为","苹果"}},{{"相机"},{"佳能","尼康"}}},
                                  {{{"书籍"}},{{"社会科学"},{"思考快与慢"},{"选择学说"},{"超越自卑"}},{{"自然科学"},{"进化论"},{"时间简史"}},{{"虚拟类"},{"三体"},{"战争与和平"}}},
                                  {{{"家具"}},{{"衣柜"},{"高衣柜","矮衣柜"}},{{"沙发"},{"大沙发","小沙发"}},{{"桌子"},{"写字桌","餐桌"}}}
                                 };
    
    • 构造思想


      构造思维数组思想.png

    小知识点

    //随机选择一个玩家开始,length是玩家数组长度
            //nextInt(100)是让随机数分配的更均匀
            int index = new Random().nextInt(100)%length;
            while(true) {
                //玩家轮流射击,直到有一人dead程序退出
                //%数组长度可以让index不断增加后依然在数组内循环
                plas[index++%length].shot(gun);
            }
    
    

    仿制一个ArrayList

    public class MyArrayList {
        private int[] content;
        private int size=0;
        
        public MyArrayList() {
            //默认初始化分配6个长度给数组
            content = new int[6];
        }
        //获取数组元素数量
        public int getSize() {
            return size;
        }
        
        //根据值元素值删除元素
        public boolean delete(int value) {
            for(int i = 0; i<content.length; i++) {
                if(content[i] == value) {
                    //有和传入的值相等的元素,后面的元素就向前覆盖
                    for(int j = i; j<content.length-1;j++) {
                        content[j] = content[j+1];
                    }
                    //大小减一
                    size--;
                    return true;
                }
            }
            return false;
        }
        
        
        //返回插入元素的下标
        public int add(int value) {
            //如果size数组已经满了就重新分配空间
            if(size==content.length) {
                //+length/2 + 1 的原因是防止length为0时无法增加
                int[] temp = new int[content.length+content.length/2+1];
                //拷贝老数组元素到新数组
                for(int i =0;i<content.length;i++) {
                    temp[i]=content[i];
                }
                //把新元素付给新数组
                temp[content.length] = value;
                //把新数组赋值给老数组
                content = temp;
                //长度加一
                size++;
                return size-1;
            }
            
            content[size] = value;
            size++;
            return size-1;
        }
        
        //根据下标获取值
        public int getValue(int index) {
            if(index<0||index>=size) {
                System.out.println("数组越界!");
                System.exit(0);
            }
            return content[index];
        }
    
    }
    

    相关文章

      网友评论

          本文标题:00.两周预科学习重点

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