为了账号安全,请及时绑定邮箱和手机立即绑定

使用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();
    }
}


正在回答

1 回答

我是这样写的,也是用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);
  }
 }


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

使用ASCII码值转换完成作业

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信