日期:2014-05-20  浏览次数:20730 次

求教关于List的size问题
我想要实现用户在jcheckbox中多选运算符,然后在所选的运算符中随机提出一个运算符。可是假如我循环十次,输出的运算符都是每次选择的运算符中的第一个,没有出现随机输出的情况。所以我用System.out.println(getOpera.size());来查看list的大小,发现,不管我选择了几个运算符,getOpera.size()永远是1。这我就有点蒙了。所以麻烦各位帮帮我,谢谢。
=========================================================
Java code
public List getOper(){
        int k=0;
        if(getOpera.size()==0){
            if(cbAdd.isSelected()){
                getOpera.add(k,'+');
                k++;
            }else if(cbSub.isSelected()){
                getOpera.add(k,'-');
                k++;
            }else if(cbMul.isSelected()){
                getOpera.add(k,'*');
                k++;
            }else 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);
    }


------解决方案--------------------
探讨
if(getOpera.size()==0){

------解决方案--------------------
Java code

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);
    }