一道Java编程题 通过继承java.Util.Random类设计一个类RandomEX,并实现

一道Java编程题通过继承java.Util.Random类设计一个类RandomEX,并实现以下功能:1.添加方法:StringnextBinaryString(int... 一道Java编程题

通过继承java.Util.Random类设计一个类RandomEX,并实现以下功能:
1.添加方法:String nextBinaryString (int n)和 String nextHexString (int n),分别用于产生固定长度为n的二进制和十六进制字符串
2.添加方法: String nextBinaryString (int n)和 String nextHexString (int n) 分别用于产生随机长度为1~n的 二进制和十六进制字符串
设计一个测试类,用于测试添加的四个方法,通过调用各方法,参数n=4(固定长度为4或随机长度为1~4),分别生成10随机字符串。
展开
 我来答
老冯文库
推荐于2017-12-16 · 知道合伙人软件行家
老冯文库
知道合伙人软件行家
采纳数:1139 获赞数:8733

向TA提问 私信TA
展开全部

Java程序:

import java.util.Random;
  
public class HardWork {
    public static void main(String[] args) {
     RandomEX rand = new RandomEX();
     int n = 4;
     int group = 10;
    
     for(int i=0; i<group; i++) {
     System.out.printf("第 %2d 组:\n", i + 1);
     System.out.printf("1~%d长度二进制字符串: \t%s\n", n, rand.nextBinaryString1(n));
     System.out.printf("固定%d长度二进制字符串: \t%s\n", n, rand.nextBinaryString2(n));
     System.out.printf("1~%d长度十六进制字符串:\t%s\n", n, rand.nextHexString1(n));
     System.out.printf("固定%d长度十六进制字符串:\t%s\n", n, rand.nextHexString2(n));
     System.out.println();
     }
    }
}
/**
 * 随机数类
 * @author 冯向科
 * @version 2016.05.07
 */
class RandomEX extends Random {
private static final long serialVersionUID = 1L;

/**
 * 产生随机长度为1~n的二进字符串
 * @param n 字符串最大长度
 * @return 长度为1~n的二进制字符串
 */
public String nextBinaryString1 (int n) {
long num;
StringBuilder str = new StringBuilder();
int len;

do {
num = this.nextLong();
str.append(Long.toBinaryString(num));
len = str.length();
} while(len < n);

int size = this.nextInt(n) + 1;

return str.substring(0, size);
}

/**
 * 产生固定长度为n的二进字符串
 * @param n 字符串固定长度
 * @return 固定长度为n的二进字符串
 */
public String nextBinaryString2 (int n) {
long num;
StringBuilder str = new StringBuilder();
int len;

do {
num = this.nextLong();
str.append(Long.toBinaryString(num));
len = str.length();
} while(len < n);

return str.substring(0, n).toUpperCase();
}

/**
 * 产生随机长度为1~n的十六进字符串
 * @param n 字符串最大长度
 * @return 长度为1~n的十六进制字符串
 */
public String nextHexString1 (int n) {
long num;
StringBuilder str = new StringBuilder();
int len;

do {
num = this.nextLong();
str.append(Long.toHexString(num));
len = str.length();
} while(len < n);

int size = this.nextInt(n) + 1;

return str.substring(0, size).toUpperCase();
}

/**
 * 产生固定长度为n的十六进字符串
 * @param n 字符串固定长度
 * @return 固定长度为n的十六进字符串
 */
public String nextHexString2 (int n) {
long num;
StringBuilder str = new StringBuilder();
int len;

do {
num = this.nextLong();
str.append(Long.toHexString(num));
len = str.length();
} while(len < n);

return str.substring(0, n).toUpperCase();
}
}


运行测试:

第  1 组:

1~4长度二进制字符串: 11

固定4长度二进制字符串: 1010

1~4长度十六进制字符串: 44B

固定4长度十六进制字符串: A7C3


第  2 组:

1~4长度二进制字符串: 110

固定4长度二进制字符串: 1110

1~4长度十六进制字符串: E96D

固定4长度十六进制字符串: 61F1


第  3 组:

1~4长度二进制字符串: 101

固定4长度二进制字符串: 1111

1~4长度十六进制字符串: B1C

固定4长度十六进制字符串: A0F1


第  4 组:

1~4长度二进制字符串: 1101

固定4长度二进制字符串: 1010

1~4长度十六进制字符串: 1DC

固定4长度十六进制字符串: D38E


第  5 组:

1~4长度二进制字符串: 1

固定4长度二进制字符串: 1110

1~4长度十六进制字符串: 70D8

固定4长度十六进制字符串: 495B


第  6 组:

1~4长度二进制字符串: 1100

固定4长度二进制字符串: 1011

1~4长度十六进制字符串: F6

固定4长度十六进制字符串: 5086


第  7 组:

1~4长度二进制字符串: 100

固定4长度二进制字符串: 1100

1~4长度十六进制字符串: 86A

固定4长度十六进制字符串: 23A0


第  8 组:

1~4长度二进制字符串: 1

固定4长度二进制字符串: 1101

1~4长度十六进制字符串: 8

固定4长度十六进制字符串: F967


第  9 组:

1~4长度二进制字符串: 110

固定4长度二进制字符串: 1000

1~4长度十六进制字符串: F194

固定4长度十六进制字符串: 7C3D


第 10 组:

1~4长度二进制字符串: 1101

固定4长度二进制字符串: 1100

1~4长度十六进制字符串: 4

固定4长度十六进制字符串: FB2A

追问
谢谢你
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式