【问题标题】:Array to move the numbers in the starting and the special character at the last in array using java使用java在数组中移动起始数字和最后一个特殊字符的数组
【发布时间】:2018-07-22 19:03:56
【问题描述】:

我有一个数组

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);
    }
}

我得到的 O/P 为 1234,,$,$,, 而不是 1,2,3,4,$,$

【问题讨论】:

标签: java arrays


【解决方案1】:

排序不是单一的活动。排序实际上是排序和比较。

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

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

这里是其他问题的链接,解释了如何做到这一点: How to use Comparator in Java to sort

【讨论】:

    【解决方案2】:

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

     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.substring(0, result.length() - 1);
    

    现在result 持有想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-17
      • 2014-02-16
      • 2021-12-30
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      相关资源
      最近更新 更多