java吧 关注:1,235,221贴子:12,702,889
  • 3回复贴,共1

请教问题: 各位路过的大佬看看指点一下

取消只看楼主收藏回复

这是一个书上的练习题。
大小王是2个字符串。难道要把数组变成 String 类型吗 ?
能在现有基础上进行增加改变么
另外吐槽的 我才学到 一维数组。 -_-|| 水平有限


IP属地:湖北1楼2018-09-19 20:03回复
    分析: 一副牌有54张
    * int[] deck = new int[54] ;
    * 花色有 4 种 : 方片 黑桃 红桃 梅花 每样各有13张 1张 大王 1张皇后
    * 随机出4张
    * for(i = 0 ; i < 54 ; i ++)
    * sc=random()*deck.length ;
    *
    * suits / 13 决定牌花色
    * ranks % 13 决定具体花色中的哪张牌
    * 需要随机打乱数组 random shuffle :
    * for(int i = deck.length-1 ; i>0; i--){
    * int j = (int) (Math.random() *(deck.length ) ;
    * int temp = deck[i] ;
    * deck[i] = deck[j];
    * deck[i] = temp ;
    *


    IP属地:湖北3楼2018-09-19 20:32
    回复

      刚运行了一边程序得到的结果 @GTA小鸡 @晨灬曦:


      IP属地:湖北6楼2018-09-19 20:40
      回复
        public class DeckOfCards{
        public static void main(String[]args) {
        int [] deck =new int [54] ; //规定扑克张数
        String[] suits = { "方片" ,"黑桃 " ,"梅花 " ," 红桃" } ;
        String [] ranks = {"Ace ","2","3","4","5","6","7","8","9","10","Jack","Queen","King" } ;
        for(int i = 0 ; i < deck.length ; i++) // 得到扑克牌的下标
        deck[i] =i ;
        for( int i =0; i< deck.length ; i++) { // 洗牌
        int j = (int) (Math.random() * deck.length ) ;
        int temp = deck[i] ; // 把现有的一张牌赋给一个临时值
        deck[i] = deck[j]; // 把随机得到的牌赋给现在的牌面
        deck[j] = temp ; // 把临时牌面的牌赋值给随机牌面
        }
        // 下面代码块不在控制牌数循环内
        for( int i = 0 ; i < deck.length-1 ; i++) {
        String suit = suits[ deck[i] / 13 ] ;
        String rank = ranks[ deck[i] % 13 ] ;
        if( i>= deck.length-1 )
        System.out.print("底牌是: "+ rank+suit );
        else if( i % 3==0)
        System.out.printf(rank+suit+ " " );
        else if(i % 3 == 1 )
        System.out.print(" "+ rank+suit );
        else if( i % 3 == 2 )
        System.out.println(" "+ rank+suit );
        }
        }
        }
        @♬晨灬曦 @GTA小鸡 我把程序贴上来了


        IP属地:湖北7楼2018-09-19 20:59
        收起回复