對撲克牌字串陣列進行排序
阿新 • • 發佈:2019-02-10
對於一個撲克牌字串陣列進行排序,這裡使用的是一個笨辦法,不管字串是數字還是字母,轉為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 ; } }