数组使用java在数组中移动起始数字和最后一个特殊字符

数组使用java在数组中移动起始数字和最后一个特殊字符,java,arrays,Java,Arrays,我有一个数组 int arr[]={1,$,2,3,$,$,4,5} 并希望输出为 arr[]={1,2,3,4,5,$,$,$,$} 你能帮帮我吗 我的代码是 public class ArrayTest { static void splitString(String str) { StringBuffer alpha = new StringBuffer(), num = new StringBuffer(), special = new

我有一个数组

int arr[]={1,$,2,3,$,$,4,5}

并希望输出为

arr[]={1,2,3,4,5,$,$,$,$}

你能帮帮我吗

我的代码是

public class ArrayTest
{
    static void splitString(String str)
    {
        StringBuffer alpha = new StringBuffer(), 
        num = new StringBuffer(), special = new StringBuffer();

        for (int i=0; i<str.length(); i++)
        {
            if (Character.isDigit(str.charAt(i)))
                num.append(str.charAt(i));

            else
                special.append(str.charAt(i));
        }


        System.out.print(num);
        System.out.print(special);
    }

    public static void main(String args[])
    {
        String str = "1,2,$,$,3,4";
        splitString(str);
    }
}
公共类数组测试
{
静态void splitString(String str)
{
StringBuffer alpha=新的StringBuffer(),
num=新StringBuffer(),special=新StringBuffer();

对于(inti=0;i排序不是单个活动。排序实际上是排序和比较

您可以使用Java内置排序,但可以使用自己的比较器(知道如何比较的代码片段)

您的比较器,需要确保特殊符号刚好大于任何其他值(并且等于任何其他特殊符号)。如果两个比较值都不是特殊符号,则进行普通比较

下面是其他问题的链接,解释了如何做到这一点:

从您的输出中,我可以看到您的函数在排序中也包含逗号。您必须在对字符串排序之前删除逗号:

 str = str.replaceAll(",", "");
这行代码将用零替换所有逗号,或者换句话说,删除它们。现在您可以执行排序算法并在末尾添加逗号:

String merge = num.toString() + special.toString();
String result = "";
for (int i = 0; i < merge.length(); ++i) {
    result += merge.charAt(i) + ",";
}

现在,
result
保存了想要的结果。

到目前为止您尝试了什么?您到底被卡在哪里了?请查看:
$
到底是什么?我无法将特殊字符从原始位置移动到可能的重复位置
result = result.substring(0, result.length() - 1);