字符串中数据的排序

题目:有一个字符串:“91 27 46 38 50”,请写程序实现最终输出结果:“27 38 46 50 91”。

思路:


① 给数据排序,我们首先想到的就是数组的排序方法,Arrays.sort(arr);
② 现在题目给出的是一个字符串,并非数组,而我们需要将字符串中用空格隔开的这些数据都一一对应地复制到一个数组中,进行排序;
③ 字符串中的每个数据都要搬运到一个新的数组中,一定是要用到 for 循环进行遍历,数组遍历的前提得有终止条件,也就是需要知道数组长度,而这个数组的长度正是我们字符串中数据的个数;
④ 问题就转移到了如何获取到数据的个数,不要忘了我们的字符串也是有数组的,题目给出的是字符串,接下来我们需要将字符串的数据放到字符串数组中;
⑤ 创建一个字符串数组,这里给我们提供了一个方法 split(),字符分隔符,它可以将字符串中的每一个数据通过空格分隔开,如 String[] str = s.split(" ");
⑥ 创建一个 int 数组,用于后续排序,int 数组的长度即字符串数组的长度,通过 str.length 获取;
⑦ 现在数组的长度知道了,我们就可以利用 for 循环为数组添加数据,自然是将字符串数组的每个数据依次赋值给 int 数组,赋值过程我们可以发现这两个数组中的数据根本不是同一种数据类型,所以不可能直接赋值,这里通过上面讲到的 String 类型转换为 int 类型方法对其进行转换,然后循环赋值;
⑧ 得到数组之后,我们对该数组进行排序,Arrays.sort(arr);
⑨ 排序之后还没结束,因为我们最终要的结果并非一个数组,它还是要输出一个字符串,且以空格分隔,采用拼接字符串的方式实现,之前我们学到过一个 StringBuilder,利用它的 append() 方法将字符串拼接成我们想要的格式,对于数组中的数据,依然采用 for 循环进行遍历,将遍历到的结果添加至字符串尾,输出结果。

//Test.java

package com.zxe;

import java.util.Arrays;

public class Test {
    public static void main(String[] args) {
        String s = "91 27 46 38 50";
        String[] str = s.split(" ");
        int[] arr = new int[str.length];
        for (int i = 0; i < arr.length; i++) {
            int k = Integer.parseInt(str[i]);
            arr[i] = k;
        }
        Arrays.sort(arr);

        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            if (i == args.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(" ");
            }
        }
        String result = sb.toString();

        System.out.println(result);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_52861684/article/details/129266711