当前位置: 代码迷 >> Java面试 >> 犯这样的异常,算是缺钙还是缺铁
  详细解决方案

犯这样的异常,算是缺钙还是缺铁

热度:20   发布时间:2016-04-17 19:41:36.0
犯这样的错误,算是缺钙还是缺铁?

昨天看了“java数据结构和算法”数组的二分查找,今天复习,自己敲代码,老是死循环。
结果,调试了半天,下面加注释的地方,就是出错的地方。贴上留念!

Java code
class DataArray01 {    private long[] arr;    private int elements;    public DataArray01(int max) {        arr = new long[max]; // 这里忘记语法了!        elements = 0;    }    /**     * find 方法     * @param search     * @return     */    public int find(long search) {        int minbound = 0;        int maxbound = elements - 1;        while (true) {            /* 下面这句一定要写在while内部  */            int curin = (minbound + maxbound) / 2;                        if (arr[curin] == search) {                return curin;            } else if (minbound > maxbound) {                return elements;            } else {                /* 注意这里不能写成  search > curin */                if (search > arr[curin]) {                    minbound = curin + 1;                } else {                    maxbound = curin - 1;                }            }        }    }        /**     * insert 方法     * @param data     */    public void insert(long data){        int j ;        /* 注意不能写成 j<elements-1 */        for(j=0;j<elements;j++){            if(arr[j] > data) break ;        }        for(int k=elements;k>j;k--){            arr[k] = arr[k-1] ;        }        arr[j] = data ;        elements++;    }    public boolean delete(long data){        boolean flag = false ;        int j = find(data) ;        if(j < elements){            for(int i=j;i<elements;i++){                arr[i] = arr[i+1];            }            elements-- ;            flag = true ;        }                return flag ;    }    /**     * display 方法     * @return     */    public String display(){        StringBuilder arrStr = new StringBuilder();        /* 这里不能写成 i<elements-1 ,否则最后一个元素永远也取不到! */        for(int i=0;i<elements;i++){            arrStr.append(arr[i]);            if(i == elements-1){                arrStr.append(" .");            }else{                arrStr.append(" ,");            }        }        return arrStr.toString() ;    }        public int size(){        return elements ;    }}public class ErFenChaZhao {    public static void main(String[] args) {        DataArray01 arr = new DataArray01(100);        arr.insert(100);        arr.insert(69);        arr.insert(34);        arr.insert(98);        arr.insert(120);        arr.insert(500);        arr.insert(22);        arr.insert(33);        arr.insert(99);        arr.insert(77);        arr.insert(44);        arr.insert(11);        System.out.println(arr.display());        if(arr.delete(34))            System.out.println(arr.display());        if (arr.delete(22))            System.out.println(arr.display());        if(arr.find(500) < arr.size())            System.out.println("find 500");    }}


------解决方案--------------------
都缺!
------解决方案--------------------
缺吃核桃~~
------解决方案--------------------
补补更健康
------解决方案--------------------
脑袋进水了, 嘻嘻。。。。。
------解决方案--------------------
用while循环的时候一定要非常小心的!
  相关解决方案