本帖最后由 blazecheng 于 2011-11-19 21:46:08 编辑

解决方案 »

  1.   

    你总是在第一次准许add,size大于1的时候就不进入,不add了,那不老是size为1嘛。为什么要写这个if呢?
      

  2.   

    如果没有这句的话,会出现size一直增加,但是还是不能随机打印,只能打印第一个运算符
      

  3.   

    我使用的是else if 为什么不能在一次调用中就把所有用选择的运算符添加到list中呢?
      

  4.   

    你getOper这个方法写得就是只能添加一种到list中,不管你选择了几个。
      

  5.   

    即便你不希望size一直增长,这样写if也是不对的。
    还有,元素少的时候,随机值为0的几率当然就大一点,你试过很多次吗?
      

  6.   


    public List getOper(){
            int k=0;
            getOpera.clear(); //每次都清空getOpera,然后重新追加用户选择的符号
            //if(getOpera.size()==0){ //这个if不要,否则如果getOpera有元素以后就不会再追加了
                if(cbAdd.isSelected()){
                    getOpera.add(k,'+');
                    k++;
                } 
                if(cbSub.isSelected()){ //不要用else if,否则满足if就不会进入else if,就不能有多个值了
                    getOpera.add(k,'-');
                    k++;
                }
                if(cbMul.isSelected()){ //这里一样
                    getOpera.add(k,'*');
                    k++;
                }
                if(cbDiv.isSelected()){ //这里一样
                    getOpera.add(k,'/');
                    k++;
                }
            //}
            return getOpera;
        }
        
        public char choiceOper(){
            getOper();
            Random ranOp = new Random();
            int i=ranOp.nextInt(getOpera.size()); //这样这里才有意义
            System.out.println(getOpera.size());
            return (Character) getOpera.get(i);
        }
      

  7.   


    我试过了,我有直接打印出那个i,size一直增加,但是i一直是0,不论多少次
      

  8.   


    是如果没有那句if(getOpera.size()==0)的话,下面用system.out.println打印出list的size,会一直增加1,但是输出的运算符却没变