继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java入门第三季的6-5作业。使用两种方法生成10个长度为10以内的随机字符串

nuanchazy
关注TA
已关注
手记 4
粉丝 15
获赞 138

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class testCollection {

    /**
     *利用Collections.sort()方法对泛型为String的List进行排序
     *1.创建完List<String>之后,往其中添加十条随机字符串
     *2.每条字符串的长度为10以内的随机整数
     *3.每条字符串的每个字符都为随机生成的字符,字符可以重复
     *4.每条随机字符串不可重复
     */
    Random random=new Random();

    public void testSort() {
        List<String> stringList=new ArrayList<String>();
        String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for(int i=1;i<=10;i++) {//i为字符串个数
            StringBuilder sb=new StringBuilder();//创建一个空的StringBuilder对象
            do{
                int j;//j为字符串长度
                do {
                    j=random.nextInt(10);//生成任意的字符串长度
                }while(j==0);//若字符串长度为0,则重新生成
                for(int k=0;k<j;k++) {//k为字符串索引,从0开始
                    int l=random.nextInt(61);//l为str字符串任意位置,str共有62个,位置为0-61
                    sb.append(str.charAt(l));//获取str中任意位置的元素,追加到sb对象的末尾
                    }
            }while(stringList.contains(sb));//若字符串与已生成的字符串List集合中的任一个重复,则重新生成
            stringList.add(sb.toString());//将已生成的字符串StringBuilder对象转换为String对象添加到stringList中
        }
        System.out.println("—————————第一种方法————————");
        System.out.println();
        System.out.println("——————————排序前——————————");
        for (String string : stringList) {//foreach方法遍历系统自动生成的stringList中元素
            System.out.println("系统自动添加字符串:"+string);
        }
        Collections.sort(stringList);//调用Collections.sort()方法对stringList进行排序
        System.out.println("——————————排序后——————————");
        int m=0;
        for (String string : stringList) {//foreach方法遍历经排序后的stringList中元素
            m++;
            System.out.println("排序后字符串"+m+":"+string);
        }
    }

    public void sortTest() {
        List<String> stringList=new ArrayList<String>();
        for(int i=1;i<=10;i++) {
            StringBuilder sb=new StringBuilder();
            do {
                int j;
                do{
                    j=random.nextInt(10);
                }while(j==0);
                 int k;
                for(k=0;k<j;) {
                         int l=random.nextInt(127);//l为ASCII码表的任意码值,ASCII码表字符共有128个,码值为0-127
                         if((l>47&&l<58)||(l>64&&l<91 )||(l>96&&l<123)) {//数字,英文字符大、小写ASCII码值范围
                         sb.append((char)l);//ASCII码转换成字符串,追加到sb对象的末尾
                         }else {
                             continue;//若随意生成的码值不在数字,英文字符大、小写ASCII码值范围内,则跳出循环执行下一次
                         }k++;
                }
            }while(stringList.contains(sb));
            stringList.add(sb.toString());
        }
        System.out.println("—————————第二种方法————————");
        System.out.println();
        System.out.println("——————————排序前——————————");
        for (String string : stringList) {//foreach方法遍历系统自动生成的stringList中元素
            System.out.println("系统自动添加字符串:"+string);
        }
        Collections.sort(stringList);//调用Collections.sort()方法对stringList进行排序
        System.out.println("——————————排序后——————————");
        int m=0;
        for (String string : stringList) {//foreach方法遍历经排序后的stringList中元素
            m++;
            System.out.println("排序后字符串"+m+":"+string);
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        testCollection tc=new testCollection();
        tc.testSort();
        tc.sortTest();
    }

}

运行结果预览:
图片描述图片描述

打开App,阅读手记
8人推荐
发表评论
随时随地看视频慕课网APP

热门评论

你那个应该写为andom.nextInt(11);

它是指在0到所写的数之间取值(包括0)

查看全部评论