请大牛指教,为什么我运行到开始发牌就停住了?

来源:7-1 简易扑克牌游戏

Juneava

2016-10-24 14:36

System.out.println("******开始发牌******");
		     int[] s=new int[4];
		     int i=0;
		     int index;
		    while(i<4){
		    	 index=(int)(Math.random()*52);
		    	for(int j=0;j<i;j++){
		    	if(s[j]==index) 
		    		{
		    		break;	
		    		}
		    	else{
		    		s[i]=index;i++;
		    	}
		    	
		     }
		    }
		     System.out.println("玩家"+player1.name+"拿牌");
		     handCard1.add(cardToGet.get(s[0]));
		     System.out.println("玩家"+player2.name+"拿牌");
		     handCard2.add(cardToGet.get(s[1]));
		     System.out.println("玩家"+player1.name+"拿牌");
		     handCard1.add(cardToGet.get(s[2]));
		     System.out.println("玩家"+player2.name+"拿牌");
		     handCard2.add(cardToGet.get(s[3]));
	        System.out.println("******发牌完毕******");

上面的添加玩家是可行的,就没放上来。我是这么想的:牌组是名为cardToGet的List,手牌分别是名为handCard1和handCard2的List,在一个数组里随机无序地放上4个1-52之间的整数,while里面嵌套一个for循环是为了使数组里面的数不重复,给玩家发牌直接把数组里面的数作为索引获取cardToGet里的元素,这样就实现了给两名玩家没人随机发两张牌,但是运行到开始发牌就没下文了。。。求指教啊!

写回答 关注

2回答

  • 改变D
    2016-10-27 14:27:54
    已采纳

    int[] s = new int[4];

    int i =1;

    int index;

    boolean flag ;

    while(i<=4){

    flag = true;

    index = (int)(Math.random()*52);

    for(int j =0;j<i;j++){

    if(s[j] == index){

    flag = false;

    break;

    }

    }

    if(flag){

    s[i-1] = index;

    i++;

    }

    }


    改变D 回复Juneav...

    不客气

    2016-10-27 16:32:07

    共 2 条回复 >

  • 改变D
    2016-10-27 14:28:55

    你的代码无法跳进while里面的for循环


    改变D 回复Juneav...

    是的,你0<0,判断条件直接进不了第一次循环

    2016-10-27 16:20:14

    共 3 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409771 学习 · 4546 问题

查看课程

相似问题