java数组按照大小排列_Java怎么让数组中元素按照牌值从小到大的顺序排列

展开全部

你说的这些牌是用数组来存放的,所以有些麻烦。直接复制运行,更改牌的62616964757a686964616fe58685e5aeb931333332643838数量测试,有不懂的再问我package test;

import java.util.Arrays;

import java.util.Random;

public class DaoTest {

public static void main(String[] args) {

String[] str = getArr(100);

str = sorts(str);

System.out.println(Arrays.toString(str));

}

/**

* 从牌堆里抽出n张牌,可以有重复

*

* @param n

* @return

*/

public static String[] getArr(int n) {

String[] suit = { "黑桃", "红心", "梅花", "方块" };

String[] number = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",

"J", "Q", "K" };

String[] result = new String[54];

int index = 0;

for (int i = 0; i 

for (int j = 0; j 

result[index] = "" + suit[i] + number[j];

index++;

}

}

result[52] = "小王";

result[53] = "大王";

String[] some = new String[n];

for (int i = 0; i 

some[i] = result[(new Random()).nextInt(54)];

}

return some;

}

/**

* 将所有牌分为5组,排序后在放到一起

* @param arr

* @return

*/

public static String[] sorts(String[] arr) {

System.out.println(Arrays.toString(arr));

StringBuffer ht = new StringBuffer("");

StringBuffer hx = new StringBuffer("");

StringBuffer mh = new StringBuffer("");

StringBuffer fk = new StringBuffer("");

StringBuffer king = new StringBuffer();

for (int i = 0; i 

if (arr[i].length() == 2) {

if (king.toString().isEmpty()) {

king.append(arr[i]);

} else {

king.append("," + arr[i]);

}

} else if (arr[i].contains("黑桃")) {

if (ht.toString().isEmpty()) {

ht.append(arr[i]);

}else{

ht.append("," + arr[i]);

}

} else if (arr[i].contains("红心")) {

if (hx.toString().isEmpty()) {

hx.append(arr[i]);

}else{

hx.append("," + arr[i]);

}

} else if (arr[i].contains("梅花")) {

if (mh.toString().isEmpty()) {

mh.append(arr[i]);

}else{

mh.append("," + arr[i]);

}

} else {

if (fk.toString().isEmpty()) {

fk.append(arr[i]);

}else{

fk.append("," + arr[i]);

}

}

}

String[] aht = ht.toString().trim().split(",");

String[] ahx = hx.toString().trim().split(",");

String[] amh = mh.toString().trim().split(",");

String[] afk = fk.toString().trim().split(",");

String[] aking = king.toString().trim().split(",");

aht = sort1(aht);

ahx = sort1(ahx);

amh = sort1(amh);

afk = sort1(afk);

aking = sort1(aking);

String[] result = new String[arr.length];

int index = 0;

if (aht[0].length() != 0) {

for (int i = 0; i 

result[index] = aht[i];

index++;

}

}

if (ahx[0].length() != 0) {

for (int i = 0; i 

result[index] = ahx[i];

index++;

}

}

if (amh[0].length() != 0) {

for (int i = 0; i 

result[index] = amh[i];

index++;

}

}

if (afk[0].length() != 0) {

for (int i = 0; i 

result[index] = afk[i];

index++;

}

}

if (aking[0].length() != 0) {

for (int i = 0; i 

result[index] = aking[i];

index++;

}

}

return result;

}

/**

* 按照3-J-A-2-小王-大王的顺序排序

* @param some

* @return

*/

public static String[] sort1(String[] some) {

if (some.length == 1 && some[0].length() == 0) {

return some;

}

if (some[0].length() == 2) {

Arrays.sort(some);

String[] result = new String[some.length];

for(int i = 0;i

result[i] = some[some.length-1-i];

}

return result;

}

String[] result = new String[some.length];

int[] number = new int[some.length];

String suit = "" + some[0].charAt(0) + some[0].charAt(1);

for (int i = 0; i 

String s = "" + some[i].substring(2);

if ("A".equals(s)) {

s = "14";

} else if ("J".equals(s)) {

s = "11";

} else if ("Q".equals(s)) {

s = "12";

} else if ("K".equals(s)) {

s = "13";

} else if ("2".equals(s)) {

s = "15";

}

number[i] = Integer.parseInt(s);

}

Arrays.sort(number);

for (int i = 0; i 

String s = "" + number[i];

if (number[i] == 11) {

s = "J";

} else if (number[i] == 12) {

s = "Q";

} else if (number[i] == 13) {

s = "K";

} else if (number[i] == 14) {

s = "A";

} else if (number[i] == 15) {

s = "2";

}

result[i] = suit + s;

}

return result;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值