问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

使用ASCII码值转换完成作业

package net.test;

import java.util.*;

public class Stringlist {
    String str;
    public void Addlist(){
        List<String> po=new ArrayList<String>();
        int y;
        Random random=new Random();
        y=random.nextInt(9)+1;
        for (int i=0;i<10;i++){
           StringBuffer str=new StringBuffer();
            for (int j=0;j<y;j++){
                int x;
                x=random.nextInt(75)+48;
                if (x>57&&x<65||x>90&&x<97){
                    continue;
                }
                char m=(char)x;
               str.append(m);
            }
            po.add(str.toString());
        }
        System.out.println("----------排序前---------");
        for (String obj:po){
            System.out.println(obj);
        }
        System.out.println("----------排序后---------");
        Collections.sort(po);
        for (String obj:po){
            System.out.println(obj);
        }
    }
    public static void main(String[] args){
        Stringlist stringlist=new Stringlist();
        stringlist.Addlist();
    }
}


提问者:weixin_慕村9215175 2018-11-23 15:02

个回答

  • qq_Takeiteasy_2
    2019-01-03 17:11:39

    我是这样写的,也是用ASCII码值转换。代码放下面了。

    用ASCII码值不如用 一个串里包含所有大小写字母后再随机,我看见这个课有人这样写

    你的这个代码产生的串的长度是一样的,而且感觉你判断那有问题,要不是大小写字母,就i++进行下一次循环,x重新赋值,一直到大小写字母的时候在往下进行,那要是恰巧生成x的时候没有一个是在大小写字母之间的,那list里面就没有值啊,而且 x = random.nextInt(75)+48,为啥要在0-122之间生成一个随机数??以上纯属个人分析。

    /**
      * 随机生成10个字符串:这些字符串长度可以不同,字符可以重复,但是不能有两个相同的字符串 然后对随机生成的10个字符串排序,要求输出排序前与排序后的列表序列
      */
     public void StringSort2() {
      Random r = new Random();
      int[] pool = new int[3];
      
      for (int j = 0; j < 10; j++) {
       String str = new String();
       do {
        /* 长度随机 */
        int lengthRand = r.nextInt(10) + 1; // 产生1-10(包括10)之间的随机数
        /* 字符随机 */
        for (int i = 0; i < lengthRand; i++) {
         int a = (int)(r.nextDouble() * 26) + 97; // 小写字母ASCII码值序列
         int b = (int)(r.nextDouble() * 26) + 65; // 大写字母ASCII码值序列
         int c = r.nextInt(10); // 0-9的数字
         pool[0] = a;
         pool[1] = b;
         pool[2] = c;
         int temp = pool[r.nextInt(3)];
         if (temp > 9) {
          char temps = (char) temp;
          str = str+temps;
         } else {
          str = str+temp;
         }

        }
       } while (stringSort.contains(str));
       stringSort.add(str);
       System.out.println("添加了字符串"+str);
      }
      System.out.println("排序前:");
      for (String str2:stringSort) {
       System.out.println(str2);
      }
      Collections.sort(stringSort);
      System.out.println("排序后:");
      for (String str2:stringSort) {
       System.out.println(str2);
      }
     }