我想要实现用户在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); }
------解决方案--------------------
------解决方案--------------------
- 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); }