1.为什么 short s = s + 1;是错误的,而short s+=1是正确的。2.实现一副扑克牌洗牌的功能。如果无法书写完整的代码,可以用文字描述出自己的实现思路。

解决方案 »

  1.   

    short + 1 是int 型,java会自动转型的
      

  2.   

    1.隐式类型转换可以从小到大自动转,即byte->short->int->long如果反过来会丢失精度,必须进行显示类型转换 
      而s+=1的意思与s = s+1不同,s=s+1这句先执行s+1然后把结果赋给s,由于1为int类型,所以s+1的返回值是int,编译器自动进行了隐式类型转换 
      所以将一个int类型赋给short就会出错,而s+=1不同由于是+=操作符,在解析时候s+=1就等价于s = (short)(s+1),翻番来讲就是 
      s+=1 <=> s =  (s的类型)(s+1) 
    2.http://topic.csdn.net/t/20061016/09/5084304.html
      

  3.   

    short +=1 ,相当于short = (short)(short+1)
      

  4.   

    第一道题目:因为short s 、这时 s是一个short类型的变量、而后面的s+1则是默认的int类型的变量、根据java的语法规则、int类型的变量不能无条件的转换成short类型的、所以会导致编译错误!
       希望会给你带来帮助!
      

  5.   

    1.short  s = s + 1; (s + 1 运算结果是int型,需要强制转换类型)
      

  6.   

    1.为什么 short s = s + 1;是错误的,而short s+=1是正确的。 short s=s+1:s+1后是int型,它与s的short型不匹配
    short s+=1相当于short s=(short)(s+1)所以不会有异常。
      

  7.   

    用54个数字代表54张不同的牌; 
    用一个长度为54的数组b【54】来存放这54张牌; 
    用随机函数产生0到53共54个数:
    第一次随机产生0到53     54个数中的一个数i,将b【i】交换到b【53】;
    第二次随机产生0到52     53个数中的一个j   ,将b【j】与b【52】交换;
    以此类推
    用循环实现
      

  8.   

    初始化54张牌,加入到一个List。然后使用 Collections.shuffle(list),or Collections.shuffle(list , random)shufflepublic static void shuffle(List<?> list)
    使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的。
    前面描述中使用了不确定的词“大致”,因为随机源只是大致上独立选择位的无偏源。如果它是一个随机选择位的最佳源,那么算法将完全一致的选择置换。此实现向后遍历列表,从最后一个元素一直到第二个元素,将随机选择的元素重复交换到“当前位置”。元素是从列表的一部分随机选择的,该部分列表从第一个元素一直到当前位置(包括)。此方法以线性时间运行。如果指定列表没有实现 RandomAccess 接口并且是一个大型列表,则此实现在改组列表前将指定列表转储到数组中,并将改组后的数组转储回列表中。这避免了二次行为,该行为是原地改组一个“有序访问”列表引起的。参数:
    list - 要改组的列表。
    抛出:
    UnsupportedOperationException - 如果指定列表或其列表迭代器不支持 set 操作。
    shufflepublic static void shuffle(List<?> list,
                               Random rnd)
    使用指定的随机源对指定列表进行置换。所有置换发生的可能性都是相等的,假定随机源是公平的。
    此实现向后遍历列表,从最后一个元素一直到第二个元素,将随机选择的元素重复交换到“当前位置”。元素是从列表的一部分随机选择的,该部分列表从第一个元素一直到当前位置(包括)。此方法以线性时间运行。如果指定列表没有实现 RandomAccess 接口并且是一个大型列表,则此实现在改组列表前将指定列表转储到一个数组中,并将改组后的数组转储回列表中。这避免了二次行为,该行为是原地改组一个“有序访问”列表引起的。参数:
    list - 要改组的列表。
    rnd - 用来改组列表的随机源。
    抛出:
    UnsupportedOperationException - 如果指定列表或其列表迭代器不支持 set 操作。