當前位置:成語大全網 - 新華字典 - JAVA排序數字字母混合

JAVA排序數字字母混合

import?java.util.ArrayList;

import?java.util.List;

public?class?Sort?{

/**

?*?@param?args

?*/

public?static?void?main(String[]?args)?{

//?TODO?Auto-generated?method?stub

String[]?nums?=?{?"100A",?"98.5",?"98.5A",?"34",?"52",?"100",?"98",

"98.5B"?};

//?冒泡排序法排序

for?(int?i?=?0;?i?<?nums.length?-?1;?i++)?{

for?(int?j?=?0;?j?<?nums.length?-?i?-?1;?j++)?{

double?num1;//?前壹個數字去字母後的數值

boolean?char1?=?false;?//?前壹個數字是否含有字母

int?ascii1?=?0;//?前壹個數字所含字母的ASCII碼

//?獲取每個數字的最後壹位,判斷是否為大寫字母(判斷其ASCII碼是否在65到90之間)

if?((int)?(nums[j].toCharArray()[nums[j].length()?-?1])?>=?65

&&?(int)?(nums[j].toCharArray()[nums[j].length()?-?1])?<=?90)?{

num1?=?Double.parseDouble(nums[j].substring(0,

nums[j].length()?-?1));

char1?=?true;

ascii1?=?(int)?(nums[j].toCharArray()[nums[j].length()?-?1]);

}?else?{

num1?=?Double.parseDouble(nums[j]);

}

double?num2;//?後壹個數字去字母後的數值

boolean?char2?=?false;?//?後壹個數字是否含有字母

int?ascii2?=?0;//?後壹個數字所含字母的ASCII碼

//?獲取每個數字的最後壹位,判斷是否為大寫字母(判斷其ASCII碼是否在65到90之間)

if?((int)?(nums[j?+?1].toCharArray()[nums[j?+?1].length()?-?1])?>=?65

&&?(int)?(nums[j?+?1].toCharArray()[nums[j?+?1]

.length()?-?1])?<=?90)?{

num2?=?Double.parseDouble(nums[j?+?1].substring(0,

nums[j?+?1].length()?-?1));

char2?=?true;

ascii2?=?(int)?(nums[j?+?1].toCharArray()[nums[j?+?1]

.length()?-?1]);

}?else?{

num2?=?Double.parseDouble(nums[j?+?1]);

}

//?從大到小排序

if?(num1?<?num2)?{

String?temp?=?nums[j];

nums[j]?=?nums[j?+?1];

nums[j?+?1]?=?temp;

}?else?if?(num1?==?num2)?{//?數值相等則判斷是否有字母以及字母的順序

//?如果兩個都有字母,則判斷順序

if?(char1?&&?char2)?{

//?按ASCII碼從小到大排列(即從A到Z排列)

if?(ascii1?>?ascii2)?{

String?temp?=?nums[j];

nums[j]?=?nums[j?+?1];

nums[j?+?1]?=?temp;

}

}?else?if?(!char1?&&?char2)?{//?如果後面壹個數字有字母

String?temp?=?nums[j];

nums[j]?=?nums[j?+?1];

nums[j?+?1]?=?temp;

}

}

}

}

for?(int?i?=?0;?i?<?nums.length;?i++)?{

System.out.println(nums[i]);

}

}

}

我為了賦值方便,用的是String數組,但是跟用list沒有區別,方法還是壹樣的,只是獲取長度的時候調的方法不同。數組用.length, list用的是.size()。