有个比赛项目,两个选手一个裁判。比赛规则:选手出手指头,根据出的手指头个数来定输赢。规则:5赢4、4赢3、3赢2、2赢1、1赢5.其他算平局。使用面向对象来模拟出比赛:两个选手要定出输赢。
public class Contest{ private int a; private int b; /** *定义一个比较大小的方法 *与以往的常见的比较大小的三目运算 *a>b?a:b不同的是,它返回的是字符串 */ public String max(int a,int b){ if((a==1)&&(b==5)||(a==5)&&(b==1)){ return a>b?"b":"a"; } return a>b?"a":"b"; } /** *仔细观察比赛规则可以发现 *除开平局以外的几对数字相差为1或者4 *相差为1时数值大的赢,相差为4时数值小的赢 */ public boolean One(int a,int b){ int c=a-b; if(c==1||-c==1||c==4||-c==4){ return true; } return false; } /** *最大程度地模拟比赛规则 */ public void rule(){ //a和b都取区间[1,5]里的整数 a=(int)(Math.random()*5+1); b=(int)(Math.random()*5+1); /*如果One(a,b)方法为真,就代表 非平局,再用max(a,b)方法得出 获胜者*/ if(One(a,b)){ System.out.println("选手a出"+a+",选手b出"+b+"\t选手"+max(a,b)+"赢了"); }else{ System.out.println("平局"); } } public static void main(String[] args){ Contest ct=new Contest(); for(int i=0;i<10;i++){ ct.rule(); } } }注: 原创代码,如有雷同,纯属巧合 代码有许多不足,欢迎留言讨论和更正
