有一篇关于数组的代码,但是不懂,希望能帮帮小弟我

有一篇关于数组的代码,但是不懂,希望能帮帮我
各位大哥们,能否帮小弟一个小忙,帮我把下面这段代码完整的用中文注释一下,一部门看不懂!再次谢谢了!


public class Main {
public static void main(String[] args) {
String[] a = {"红桃1","红桃2","红桃3","红桃4","红桃5","红桃6","红桃7","红桃8","红桃9","红桃10","红桃j","红桃q","红桃k","黑桃1","黑桃2","黑桃3","黑桃4","黑桃5","黑桃6","黑桃7","黑桃8","黑桃9","黑桃10","黑桃j","黑桃q","黑桃k","方块1","方块2","方块3","方块4","方块5","方块6","方块7","方块8","方块9","方块10","方块j","方块q","方块k","梅花1","梅花2","梅花3","梅花4","梅花5","梅花6","梅花7","梅花8","梅花9","梅花10","梅花j","梅花q","梅花k"};
String[] b = new String[52];
int n = a.length;
for(int i = 0; i < b.length; i++) {
int r = (int)(Math.random()*n);
b[i] = a[r];
a[r] = a[n - 1];
n--;
System.out.print(b[i]+" ");
}
}
}
------解决方案--------------------
public class ArrayTest {

public static void main(String[] args) {

//定义一个数组a
String[] a = { "红桃1", "红桃2", "红桃3", "红桃4", "红桃5", "红桃6", "红桃7", "红桃8",
"红桃9", "红桃10", "红桃j", "红桃q", "红桃k", "黑桃1", "黑桃2", "黑桃3", "黑桃4",
"黑桃5", "黑桃6", "黑桃7", "黑桃8", "黑桃9", "黑桃10", "黑桃j", "黑桃q", "黑桃k",
"方块1", "方块2", "方块3", "方块4", "方块5", "方块6", "方块7", "方块8", "方块9",
"方块10", "方块j", "方块q", "方块k", "梅花1", "梅花2", "梅花3", "梅花4", "梅花5",
"梅花6", "梅花7", "梅花8", "梅花9", "梅花10", "梅花j", "梅花q", "梅花k" };
//定义一个数组b,长度为52
String[] b = new String[52];
//将数组a的长度赋给n
int n = a.length;
//对数组b进行循环
for (int i = 0; i < b.length; i++) {
//随机一个0到n之间的值赋值给r
int r = (int) (Math.random() * n);
//数组a[r]赋给b[i]
b[i] = a[r];
//数组a逆循环赋给a[r]
a[r] = a[n - 1];
n--;
System.out.print(b[i] + " ");
}
}
}



------解决方案--------------------
引用:
Quote: 引用:

你这个程序有问题吧,本意是打乱扑克的次序吧。
b[i] = a[r];
a[r] = a[n - 1];
n--;
这里不对吧!
您好。我这段是没看懂

本意是想从这个固定数组随机输出一个数!我自己比较笨的方法就是先随机52个数字,然后用switch 检测数字 ,给一个个的case定义花色牌面!我太笨了!

  没太听懂,你是说,给每张牌定义一张图片?
那就用Map容器吧,key是52张牌,value的图片路径,以下是代码:
  static Map brands=new HashMap();

public static void main(String[] args) {
TestBrand tb=new TestBrand();

String[] a = {"a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12","a13","b1","b2","b3","b4","b5","b6","b7","b8","b9",
"b10","b11","b12","b13","c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13","d1","d2","d3","d4",
"d5","d6","d7","d8","d9","d10","d11","d12","d13"};
//修改了下代码a代表红桃,b代表黑桃,c代表方块,d代表梅花
String[] b = new String[52];
int n = a.length;
for(int i = 0; i < b.length; i++) {

puts(a[i].charAt(0),a[i]);

}
System.out.println(brands.get("c2"));;
}
public static void puts(char key,String brand){

switch (key) {
case 'a':
method(1,brand);
break;
case 'b':
method(2,brand);
break;
case 'c':
method(3,brand);
break;
default:
method(4,brand);
break;
}
}
public static void method(int i,String brand){
int str =Integer.parseInt(brand.substring(1).trim());
switch (str) {
case 1:
if(i==1){
brands.put(brand, "红桃1图片路径");
}else if(i==2){
brands.put(brand, "黑桃1图片路径");
}else if(i==3){
brands.put(brand, "方块1图片路径");
}else{
brands.put(brand, "梅花1图片路径");
}
break;
case 2:
if(i==1){
brands.put(brand, "红桃2图片路径");
}else if(i==2){
brands.put(brand, "黑桃2图片路径");
}else if(i==3){
brands.put(brand, "方块2图片路径");
}else{
brands.put(brand, "梅花2图片路径");
}
break;
default:
break;
}

}
------解决方案--------------------
这个带动图的挺好理解
http://bost.ocks.org/mike/shuffle/

这个是简体中文版的
http://blog.****.net/huagong_adu/article/details/7621603
http://www.cnblogs.com/Jerry-Chou/archive/2012/01/04/2311610.html

这个页面也挺好,收藏了
http://en.wikipedia.org/wiki/List_of_algorithms