java排列序数_JAVA排序数字字母混合

该博客介绍了一种使用冒泡排序法对包含数字和字母的字符串数组进行排序的方法。程序首先判断每个字符串的最后一个字符是否为大写字母,然后根据数字大小和字母顺序进行排序。最终输出排序后的序列。
摘要由CSDN通过智能技术生成

展开全部

import java.util.ArrayList;

import java.util.List;

public class Sort {

/**

* @param args

*/

public static void main(String[] args) {

e69da5e6ba903231313335323631343130323136353331333337623533// TODO Auto-generated method stub

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

"98.5B" };

// 冒泡排序法排序

for (int i = 0; i 

for (int j = 0; 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 

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 

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

}

}

}

我为了赋值方便,用的是String数组,但是跟用list没有区别,方法还是一样的,只是获取长度的时候调的方法不同。数组用.length, list用的是.size()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值