Java 枚举类运用 随机产生字符串

多俊睿 2018-07-23 11:15:11
写一个能产生随机英文字符串的类,要求:

1.程序预设三种产生随机字符串的范围供用户选择:大写的英文字母、小写英文字母、数字,需要通过枚举列出;

2.允许用户自定义随机字符串产生的范围(例如用户定义字符串“AFRXC”,则随机字符串只在该串中产生),其定义位置可以是在构造时定义,也可以通过类中提供的方法定义。

3.允许用户设置传入的字符串范围属否可与已存在的范围重复,例如,随机字符串产生的范围为“AaDF”,当用户再传入范围“ADJ”时,若用户选择true,则表示允许范围有重复,则此时字符串产生的范围为:“AaDFADJ”,若用户选择false,则表示不允许范围有重复,则此时字符串产生的范围为:“AaDFJ”

4.允许用户按照字符串和下标的方式对字符串产生的范围进行删除。例如,字符串产生的范围为“ASDFGH”,则当用户需要删除”SD”时,可以直接传入下标(从0开始)进行删除,也可以直接传入“SD”进行删除

5.允许用户自定生成随机字符串的长度:

I.当用户传入一个数字时,例如10,则表示从字符串范围中产生10位长度的随机字符串

II.当用户传入两个数字时,例如2,10,则表示从字符串范围中产生2~10位随机字符串(例如,可以生成5位的,可以生成2位的,也可以生成10位的,由系统随机决定)

III.输出语句中直接写类对象,则表示生成6位随机字符串,例如(A类表示随机字符串类):

A a = new A();
System.out.println(a);
输出结果为6位长度的随机字符串。

求助大家,这个怎么做?麻烦解答一下,谢谢啦!
...全文
339 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Braska 2018-07-24
  • 打赏
  • 举报
回复
A类成员
长度(int, 默认6)
生成结果串(String)
自定义范围字符串(String)
是否允许重复(boolean)
三个枚举对象(大写、小写、数字)//我猜这个应该是根据策略选择枚举对象吧。通篇看下来没看到枚举的运用。
//有必要的话在加个策略属性(int或String 有个默认的策略比如大写)
然后方法自己写吧。
maradona1984 2018-07-24
  • 打赏
  • 举报
回复
3和4没有,你自己在这基础上改改吧,本来就是很简单的东西


import java.util.UUID;

/**
* 随机工具类
* @author 0092397
*
*/
public class RandomUtils {

public static final int NUMBER = 0;

public static final int CHAR = 1;

public static final int NUM_MIX_CHAR = 2;

public static final int ALL = 3;

private static final String[] CHARS = new String[] { "0", "1", "2", "3",
"4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G",
"H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z","a", "b", "c", "d", "e", "f", "g",
"h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z" };


/**
* 获取随机字符串
* @param strategy
* @param length
* @return
*/
public static String generate(int strategy, int length) {
if (strategy == NUMBER) {
return generate(0, 9, length);
} else if (strategy == CHAR) {
return generate(10, 35, length);
} else if (strategy == NUM_MIX_CHAR) {
return generate(0, 35, length);
} else if(strategy == ALL){
return generate(0, 61, length);
}
return null;
}

/**
* 生成随机字符串
* @param start
* @param end
* @param length
* @return
*/
private static String generate(int start, int end, int length) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < length; i++) {
String c = CHARS[random(start, end)];
sb.append(c);
}
return sb.toString();
}

/**
* 产生随机数
* @param start
* @param end
* @return
*/
private static int random(int start, int end) {
return (int) (Math.random() * (end - start + 1) + start);
}

/**
*
* @return
*/
public static String getUUID(){
String uuid = UUID.randomUUID().toString();
return uuid.replaceAll("-", "");
}

/**
* 短uuid
* @return
*/
public static String getShortUUID() {
int hashCodeV = UUID.randomUUID().toString().hashCode();
if(hashCodeV < 0) {//有可能是负数
hashCodeV = - hashCodeV;
}
return String.format("%015d", hashCodeV);
}

/**
*
* @return
*/
public static String randomMobile(){
return "138" + generate(NUMBER, 8);
}

}

miaoch 2018-07-24
  • 打赏
  • 举报
回复
随机字符串是一个类,
1.构造方法,传入初始的字符池,或者不传。
2.按照其那面几个功能,添加方法,修改字符串池,和设置生成字符串的字符数。
3.提供生成方法。
其实最主要的就是生成方法,针对
ABCD1234
这样8个字符,要随机生成6个
可以再写一个方法,获得0~7的随机数,然后取下标即可。
至于最后一个,就是说toString方法返回生成方法传入6的结果

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧