对任意输入入的一个字符串,把数字从小到大排列,字母逆序排列,并且输入后字母与数据交替排列。如:"5s3fa72cs4z134556sdd"执行后为"z1s2s3s3f4d4d5c5a56"
- package com.test;
- import java.util.Arrays;
- import java.util.Scanner;
- public class Test
- {
- /**
- * {对任意输入入的一个字符串,把数字从小到大排列,
- * 字母逆序排列,并且输入后字母与数据交替排列}
- *
- * @param args
- * @author:LJ
- */
- public static void main(String[] args)
- {
- System.out.print("请输入字符串:");
- Scanner input = new Scanner(System.in);
- String str = input.next();
- String intStr = ""; //存储数字字符
- String charStr = ""; //存储字母字符
- //将输入字符串拆分成数字字符串和字母字符串,以","分割
- for (int i = 0; i < str.length(); i++)
- {
- if (str.charAt(i) >= '0' && str.charAt(i) <= '9')
- {
- intStr += str.charAt(i) + ",";
- }
- else
- {
- charStr += str.charAt(i) + ",";
- }
- }
- //数字字符串和字母字符串分割成字符串数组
- String[] intArr = intStr.split(",");
- String[] charArr = charStr.split(",");
- //数字字符串数组和字母字符串数组排序
- Arrays.sort(intArr);
- Arrays.sort(charArr);
- str = ""; //原字符串置空,用来连接两个字符串数组
- //两个字符串数组合并为字符串str
- int intLen = 0;
- int charLen = charArr.length - 1;
- //两个数组同时合并
- while (intLen < intArr.length && charLen >= 0)
- {
- str += charArr[charLen--];
- str += intArr[intLen++];
- }
- //合并字母数组的剩余元素
- while (charLen >= 0)
- {
- str += charArr[charLen--];
- }
- //合并数字数组的剩余元素
- while (intLen < intArr.length)
- {
- str += intArr[intLen++];
- }
- System.out.print(str);
- }
- }