对扑克牌字符串数组进行排序

对于一个扑克牌字符串数组进行排序,这里使用的是一个笨办法,不管字符串是数字还是字母,转为char型数组后对每一个值进行加权,即设置一个映射值。通过对映射值得比较和冒泡排序,实现真实值的排序。代码如下:
public class Sort{
	public static void main(String[] args){
		String[] str = {"2","Q","J","K","10","9","8","7","6","5","4","3","A"} ;
		char[] c = new char[13] ;     //定义一个字符数组存储字符串
		for(int i = 0; i < str.length; i++){
			if(str[i].equals("10")) str[i] = "0" ;   //将数字10变为0
			c[i] = str[i].toCharArray()[0] ;      //对每一个String变为char类型放在字符数组的对应位置
		}
		sort(c) ;
		String[] str2 = new String[13] ;
		for(int i = 0; i < c.length ; i++ ){
			if(c[i] == '0') str2[i] = "10" ;    //再将char类型变回String类型
			else str2[i] = c[i] + "" ;
		}
		for(String s : str2) System.out.print(s + " ") ;   //遍历输出字符串
		System.out.println() ;
	}
	public static char[] sort(char[] c){                  //用来对char型数组进行排序的方法
		for(int i = 0; i < c.length - 1; i++){            //冒泡排序
			for(int j = 0; j < c.length - 1 - i; j++){
				int value1 = 0 ;                          //定义每个字符的映射
				switch(c[j]){							  //对每一个字符定义一个映射值(虚拟值)
					case '3' : value1 = 1 ; break ;
					case '4' : value1 = 2 ; break ;
					case '5' : value1 = 3 ; break ;
					case '6' : value1 = 4 ; break ;
					case '7' : value1 = 5 ; break ;
					case '8' : value1 = 6 ; break ;
					case '9' : value1 = 7 ; break ;
					case '0' : value1 = 8 ; break ;
					case 'J' : value1 = 9 ; break ;
					case 'Q' : value1 = 10 ; break ;
					case 'K' : value1 = 11 ; break ;
					case 'A' : value1 = 12 ; break ;
					case '2' : value1 = 13 ; break ;
					default : value1 = 0 ;
				}
				int value2 = 0 ;                          //定义下一个字符的映射
				switch(c[j + 1]){
					case '3' : value2 = 1 ; break ;
					case '4' : value2 = 2 ; break ;
					case '5' : value2 = 3 ; break ;
					case '6' : value2 = 4 ; break ;
					case '7' : value2 = 5 ; break ;
					case '8' : value2 = 6 ; break ;
					case '9' : value2 = 7 ; break ;
					case '0' : value2 = 8 ; break ;
					case 'J' : value2 = 9 ; break ;
					case 'Q' : value2 = 10 ; break ;
					case 'K' : value2 = 11 ; break ;
					case 'A' : value2 = 12 ; break ;
					case '2' : value2 = 13 ; break ;
					default :  value2 = 0 ;
				}
				if(value1 > value2){                      //判断如果值大于下一个值,交换两个字符的位置
					char temp = c[j] ;
					c[j] = c[j + 1] ;
					c[j + 1] = temp ;
				}
			}
		}
		return c ;
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值