java常见的字符串操作

/*
 *     创建一个长度是100的字符串数组,
 *     使用长度是2的随机字符填充该字符串数组,
 *     统计这个字符串数组里重复的字符串有多少种(忽略大小写)
 * */

 知识点:使用循环生成随机字符串     

 public static void main(String[] args) {
        String[] ss=new String[100];
        
        //初始化字符串数组
        for (int i = 0; i < ss.length; i++) {
            ss[i]=randomString(2);
        }
        
        //打印字符串数组
        for (int i = 0; i < ss.length; i++) {
            System.out.print(ss[i]+" ");
            if(19==i%20)                  //每次打印到第20个之后换行
                System.out.println();
        }
        
        //调用方法判断是否有重复的字符串
        judgeString(ss);
    }
    
    
    //该函数用来生成一个长度为length的随机字符串
    private static String randomString(int length) {
        
        //字符串str保存所有字母字符和数字字符,用来生成随机字符串
        String str="abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
        //实例化一个random对象
        Random random=new Random();
        
        //实例化一个StringBuilder对象,用来保存生成的随机字符串
        StringBuilder sb=new StringBuilder();
        
        //通过循环生成长度为length的随机字符串
        for(int i=0;i<length;i++) {
            
            //利用random.nextInt(int number)方法,生成一个介于[0,number)之间的随机数
            int number=random.nextInt(62);   //生成一个[0,62)之间的随机数
            
            //根据数字number在字符串str中找到这个字符,然后插入到sb中
            sb.append(str.charAt(number));
        }
        
        //将sb转换成字符串类型并返回
        return sb.toString();
    }
    
    //判断字符串数组中重复出现的字符串有多少个
    private static void judgeString(String[] ss) {
        int same;    //用来标记是否找到相同的字符串
        
        //拿出一个字符串与所有的字符串进行比较
        for (int i = 0; i < ss.length-1; i++) {
            
            same=0;
            
            //从后一个字符串开始进行比较
            for (int j = i+1; j < ss.length; j++) {
                
                //如果找到了相等的字符串
                if(ss[i].equalsIgnoreCase(ss[j])) {
                    
                    //调用findSameStr方法,并结束这次循环
                    findSameStr(ss[i]);
                    
                    same=1;
                }  
            }
            
            //如果找到了重复的字符,那么直接跳出外层循环
            if(1==same)
                break;   
        }
    }
    
    //定义一个全局变量用来计算重复的字符串的个数
    static int count=0;
    
    private static void findSameStr(String str) {
        
        //定义一个字符串数组来保存重复的字符串
        String[] sameStr=new String[100];
        
        if(0==count) {    //如果存入的是第一个重复的字符串,则直接存入sameStr数组中
            sameStr[count++]=str;
        }
        else {   //否则进行判断
            for(int i=0;i<count;i++) {
                
                /*
                 *     在这里进行判断的原因是:
                 *             字符串数组中重复的字符串可能有多个,也就是说在这一步要存入的字符串,
                 *             可能在之前的循环中已经作为第一次出现的字符串被存放进去了,
                 *             所以在这里要判断现在存入的字符串是否在之前已经存放过了
                 * */
                if(sameStr[i].equalsIgnoreCase(str)) {  
                    break;
                }else {    //否则将其存入到字符串数组中
                    sameStr[count++]=str;
                }
            }
        }
        
        System.out.printf("总共有%d种重复的字符串",count);
        System.out.println("分别是:");
        for (int i = 0; i < count; i++) {
            System.out.print(sameStr[i]+" ");
        }
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值