出现异常后如何跳转到最初的try开始行继续执行!

  try{    
        System.out.println("输入玩家1 id");
        int i1=sc.nextInt();
            id1.setId(i1);}
        catch(InputMismatchException ie){
            System.out.println("请输入数字!");
            
        }


package imoocLx.easypk;

import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

/*1.创建一副扑克牌,不考虑大小王
2.创建两名玩家,玩家至少要有ID、姓名、手牌等属性,手牌为扑克牌的集合
3.洗牌,将之前创建的扑克牌顺序打乱
4.发牌,将洗牌之后的扑克牌集合,从第一张开始,发给两名玩家,按照一人一张的方式,每人发两张  (改为每人发三张牌)
5.开始游戏,比大小,大小相同比花色
*/
public class EasyPkp {

    
    List<Pkp> newPkp=new ArrayList<Pkp>();
    static int XPPL=50;  // 执行随机对调 的次数
    Player id1,id2;  //定义的玩家
    //生成扑克牌
    public void createPkp(){
        System.out.println("--------生成扑克-----------------");
        String[] hsArray={"红桃","方块","黑桃","梅花"};
        
        for(String hs:hsArray){
            
            for(int i=1;i<=13;i++)
                newPkp.add(new Pkp(i,hs));
        }
        
        
    }
    //洗 牌,生成随机两对数,将其对调,执行50次
    public void xPkp(){
        System.out.println("---------------开始洗牌----------------------");
        Random rand=new Random();
        for(int i=0;i<XPPL;i++){
        int a1=rand.nextInt(52);
        int a2=rand.nextInt(52);
    //    System.out.println("a1"+a1+"/a2"+a2+"pkpsize:"+newPkp.size());
        if((newPkp.size()>=52)&&(a1!=a2)){
            Pkp pkpp=newPkp.get(a1);  //得到 a1牌
            Pkp pkpp1=newPkp.get(a2);  //分别得到防止添加删除位置变化
            newPkp.remove(a1);  //删除a1位
            
            newPkp.add(a1,pkpp1);  //添加a2到a1
            newPkp.remove(a2);  //移除a2
            newPkp.add(a2,pkpp);   //添加a1
        }
        }
        
    }
    

    //创建玩家
    
    public void createPlayer(){
        
        System.out.println("---------开始创建玩家-----------");
        id1=new Player();
        id2=new Player();
        //@SuppressWarnings("resource")
        Scanner sc=new Scanner(System.in);
        
        try{    
        System.out.println("输入玩家1 id");
        int i1=sc.nextInt();
            id1.setId(i1);}
        catch(InputMismatchException ie){
            System.out.println("请输入数字!");
            
        }
            System.out.println("输入玩家1 name");
            String name=sc.next();
            id1.setName(name);
            System.out.println(id1+"创建完成!");
            System.out.println("输入玩家2 id");
            int i2=sc.nextInt();
            id2.setId(i2);
            System.out.println("输入玩家2 name");
            String name2=sc.next();
            id2.setName(name2);
            System.out.println(id2+"创建完成!");
    
        
    }
    
    //发牌
    public void fPkp(Player p1,Player p2){
        System.out.println("-------------系统开始发牌------------");
        ArrayList<Pkp> par1=new ArrayList<Pkp>();
        ArrayList<Pkp> par2=new ArrayList<Pkp>();
        for(int i=0;i<6;i=i+2){
            par1.add(newPkp.get(i));
            par2.add(newPkp.get(i+1));
        }
        p1.setSp(par1);
        p2.setSp(par2);
        
        
        showPlayerSp(p1);
        showPlayerSp(p2);
        
    }
    
    //显示玩家手牌
    public void showPlayerSp(Player p){
        ArrayList<Pkp> sp=p.getSp();
        System.out.println(p.name+"手牌为:");
        for(Pkp pkp:sp)
            System.out.println(pkp);
            
    }
    
    //输赢比较
    public void getWin(Player p1,Player p2)
    {
        System.out.println("比对结果------------");
        
        Collections.sort(p1.getSp());
        Collections.sort(p2.getSp());
        
        if((p1.getSp().get(2)).compareTo(p2.getSp().get(2))>0){
            System.out.println(p1.getName()+"获胜!");
        }
        else if((p1.getSp().get(2)).compareTo(p2.getSp().get(2))==0){
            if((p1.getSp().get(1)).compareTo(p2.getSp().get(1))>0){
                System.out.println(p1.getName()+"获胜!");}
                else if((p1.getSp().get(1)).compareTo(p2.getSp().get(1))==0)
                    {  if((p1.getSp().get(0)).compareTo(p2.getSp().get(0))>0)
                        System.out.println(p1.getName()+"羸!");
                    else if((p1.getSp().get(0)).compareTo(p2.getSp().get(0))==0)
                    System.out.println("平局!");
                    else
                        System.out.println(p2.getName()+"获胜!");
                    }
                else System.out.println(p2.getName()+"获胜!");
        
        }else
            System.out.println(p2.getName()+"获胜!");        /*
        ArrayList<Pkp> win=new ArrayList<Pkp>();
        win.add(p1.getSp().get(2));
        win.add(p2.getSp().get(2)); //2为第三张牌
        Collections.sort(win);
        System.out.println("获胜者为:"+win.get(1));*/
        
        
        
    }
    
    //显示生成扑克
    public void showPkp(){
        System.out.println("------显示当前扑克-----------------");
        for(Pkp pkp:newPkp)
            System.out.print(pkp);
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        EasyPkp easyPkp=new EasyPkp();
        easyPkp.createPkp();
        
        easyPkp.createPlayer();
        //easyPkp.showPkp();
        easyPkp.xPkp();
        //easyPkp.showPkp();
        easyPkp.fPkp(easyPkp.id1, easyPkp.id2);  //给玩家发牌
    
        /*
         * 给两个玩家发同样的牌
         *
        Player p1=new Player(2,"wge");
        Player p2=new Player(3,"xm");
        ArrayList<Pkp> sp=new ArrayList<Pkp>();
        ArrayList<Pkp> sp2=new ArrayList<Pkp>();
        sp.add(new Pkp(12,"黑桃"));
        sp.add(new Pkp(11,"黑桃"));
        sp.add(new Pkp(10,"黑桃"));
        
        sp2.add(new Pkp(12,"黑桃"));
        sp2.add(new Pkp(11,"黑桃"));
        sp2.add(new Pkp(10,"红桃"));
        
        p1.setSp(sp);
        p2.setSp(sp2);
        
        System.out.println("得到设定的手牌------");
        easyPkp.getWin(p1, p2);
        
        
        */
        
        easyPkp.getWin(easyPkp.id1,easyPkp.id2);

    }

}

active437153
浏览 1403回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java