一道java题

 我来答
老冯文库
2016-05-07 · 知道合伙人软件行家
老冯文库
知道合伙人软件行家
采纳数: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

提交
取消

辅 助

模 式