字符串数组排序java练习

创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)

注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序
输出

package character;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class TestChar {

    public static void main(String[] args) {

        // for (int i = 0; i < 30; i++) {
        // chara();
        // }
        // System.out.println(comp(67, 'A'));
        array();

    }     

    // 输出一个长度为5的随机字符串,数字、大写字母、小写字母
    public static String chara() {
        StringBuffer ss = new StringBuffer();
        for (int i = 0; i < 5; i++) {
            int k = new Random().nextInt(62);
            if (k < 10) {
                ss.append((char) (k + 48));
            } else if (k < 36) {
                ss.append((char) (k + 55));
            } else {
                ss.append((char) (k + 61));
            }
        }
        return ss.toString();
    }

    /*
     * 创建一个长度是8的字符串数组,使用8个长度是5的随机字符串初始化这个数组 对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
     */
    public static void array() {
        String[] arr = new String[8];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = chara();
        }
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                // 执行数组元素比较
                for (int k = 0; k < arr[i].length(); k++) {
                    char m = arr[i].charAt(k);
                    char n = arr[j].charAt(k);
                    if (Character.isUpperCase(m)) {
                        m = Character.toLowerCase(m);
                    }
                    if (Character.isUpperCase(n)) {
                        n = Character.toLowerCase(n);
                    }
                    // 如果m<n,则直接结束比较
                    if (m < n) {
                        break;
                    }
                    // 若m>n,则执行调换并且结束比较,否则说明m=n则需要k++并继续比较
                    else if (m > n) {
                        String s = arr[i];
                        arr[i] = arr[j];
                        arr[j] = s;
                        break;
                    }
                }

            }
            System.out.println(Arrays.toString(arr));
        }

    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值