简单的java字符串、日期格式练习题

字符串数组排序

创建一个长度是8的字符串数组
使用8个长度是5的随机字符串初始化这个数组
对这个数组进行排序,按照每个字符串的首字母排序(无视大小写)
注1: 不能使用Arrays.sort() 要自己写
注2: 无视大小写,即 Axxxx 和 axxxxx 没有先后顺序

解题思路:获得随机字符串数组,然后冒泡排序时候获得首字母,统一转换为大写或小写比较就行,稳定排序。

import java.util.Random;

public class TestNumber {

    public static String getString(int k){
        String str = "";
        while(str.length() < k){
            int str_num = new Random().nextInt(75)+48;
            char c = (char) str_num;
            if(Character.isDigit(c)||Character.isLetter(c))
                str += String.valueOf(c);
        }
        return str;
    }

    public static void  sort_arr(String[] arr){
        boolean f= true;
        while(f){
            f = false;
            int k = 0;
            String temp = arr[0];
            for(int i = 1;i < arr.length;i++){
                char ch = Character.toLowerCase(temp.charAt(0));
                char ch2 = Character.toLowerCase(arr[i].charAt(0));
                if(ch > ch2){
                    arr[k] = arr[i];
                    arr[i] = temp;
                    k = i;
                    f = true;
                }else{
                    k = i;
                    temp = arr[i];
                }
            }
        }
    }
    
    public static void main(String[] args) {

        String str[] = new String[8];
        for(int i=0;i<8;i++)
            str[i] = TestNumber.getString(5);
        for(String s: str)
            System.out.println(s);
        TestNumber.sort_arr(str);
        System.out.println();
        for(String s: str)
            System.out.println(s);
    }
}

比较字符串

创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组
统计这个字符串数组里重复的字符串有多少种

解题思路:获得随机字符串数组,利用HashSet元素不重复的特性判断多少重复字符串。

import java.util.HashSet;
import java.util.Random;

public class TestString {

    public static String getStr(int k){
        String str = "";
        while(str.length() < k){
            int str_num = new Random().nextInt(75)+48;
            char c = (char) str_num;
            if(Character.isDigit(c)||Character.isLetter(c))
                str += String.valueOf(c);
        }
        str.contains("s");
        return  str;
    }

    public static void main(String[] args) {
        String ss[] = new String[100];
        HashSet<String> sites = new HashSet<String>();
        for(int i = 0;i < 100;i++){
            String s = TestString.getStr(2);
            if(i%25 == 0) System.out.println();
            System.out.print(s+"\t");
            ss[i] = s;
            sites.add(s);
        }
        System.out.println();
        System.out.println(100-sites.size());
    }
}

练习-日期格式化

准备一个长度是9的日期数组,使用1970年-2000年之间的随机日期初始化该数组 按照这些日期的时间进行升序排序,比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大。

解题思路:得到随机日期数组后,设置只有时间的字符串格式sdf2 ,时间字符串转化为时间整型,再放入TreeMap<时间整型, 原时间数组下标> 中,TreeMap按照key自排序后顺序输出value顺序的原时间数组。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.TreeMap;

public class TestDate {
        public static void main(String[] args) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
            SimpleDateFormat sdf2 = new SimpleDateFormat("HHmmss");
            String start = "1970/01/01 00:00:00";
            String end=  "1999/12/31 23:59:59";
            Date startDate = sdf.parse(start);
            Date endDate =sdf.parse(end);
            long startTime = startDate.getTime();
            long endTime = endDate.getTime();
            String da_sz[]=new String[9];
            TreeMap<Integer, Integer> tmap = new TreeMap<>();
            System.out.println("得到的随机日期数组:");
            for (int i = 0; i < 9; i++) {
                long time = (long) (Math.random() * (endTime - startTime+1) + startTime);
                da_sz[i] = sdf.format(time);
                System.out.print(da_sz[i]+"\t");
                if((i+1)%3 == 0) System.out.println();
                tmap.put(Integer.valueOf(sdf2.format(time)),i);
            }
            System.out.println("排序后的随机日期数组:");
            int i = 0;
            for (Map.Entry entry : tmap.entrySet()) {
                System.out.print( da_sz[(int) entry.getValue()]+"\t");
                if(((i++)+1)%3 == 0) System.out.println();
            }
        }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值