java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?相关的知识,希望对你有一定的参考价值。
java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?
例如 bignumb(100000)可以给出一个100000位的数字,注意是100000位。
可否结合BigInteger 和 Random?
最好有具体代码,谢谢!
一个大数一般都是使用数组存储的。
比如使用byte[],一个byte可以表示0-99,或者使用字符串存储大数.那么,
class BigIntegerpublic byte[] x;
public String y;
public BigInteger bignumbX(int len)
if(len<=0) return null;
BigInteger r = new BigInteger();
r.x = new byte[(len+1)/2]; // 得到需要多少个byte表示大数
int i = 0; Random rnd = new Random();
while(len>2)
r.x[i++] = rnd.nextInt(100); len-=2;
if(len==1) r.x[i] = rnd.nextInt(9)+1; //1-9, 最高位不为0
else r.x[i] = rnd.nextInt(90)+10; // 10-99
return r; // 结果为r.x
public BigInteger bignumbY(int len)
if(len<=0) return null;
BigInteger r = new BigInteger();
Random rnd = new Random();
r.y = ""+(rnd.nextInt(9)+1); len--; // 1-9, 最高位不为0
while(len>0) r.y += rnd.nextInt(10);
return r; // 结果为r.y
处理加减乘除需要自己再写其他函数。
参考技术A 我查了下biginteger的api,有这么一个构造方法:BigInteger(String val),你可以通过String生成一个大数的字符串,在通过这个字符串来得到一个biginteger对象。
StringBuffer bigstring=new StringBuffer();
int length=10;//自定义的位数
for(int i=0;i<length;i++)
bigstring.append(Random.nextInt(10));
BigInteger big=new BigInteger(temp);
这样就得到一个大数,我的这台机器上没有eclipse,所以代码都是手写的,你自己在机器上调试看看,不要什么都要看被人的具体代码,自己多思考看看。
个人看法,仅供参考! 参考技术B MARK!!!
Java 泛型总结
泛型总结:
1. 泛型具有参数化类型的能力. 可以定义使用泛型类型的类或方法, 编译器会用具体类型来替换泛型类型.
2. 泛型的主要优势是能够在编译时而不是运行时检测错误.
3. 泛型类或方法允许指定这类或方法可以带有的对象类型, 如果试图使用带有不兼容对象的类或方法, 编译器或检测出这个错误.
4. 定义在类, 接口或者静态方法中的泛型称为形式反省类型, 随后可以用一个实际具体类型来替换它. 替换泛型类型的过程称为泛型实例化.
5. 不使用类型参数的泛型类称为原始类型, 例如ArrayList. 使用原始类型是为了向后兼容Java 较早的版本.
6. 荣配泛型类型有三种形式: ? , ? extends T , ? super T, 这里的T代表一个泛型类型.
1) 第一种形式, ? 称为非受限通配, 它和 ? extends Object 是一样的.
2) 第二种形式 ? extends T 称为受限通配, 代表T或者T的一个子类型.
3) 第三种形式 ? super T 称为下限通配, 表示T或者T的一个父类型.
7. 使用称为类型消除的方法来实现泛型. 编译器使用泛型类性信息来编译代码, 但是随后消除它.
因此泛型信息在运行时是不可用的. 这个方法能够使泛型代码向后兼容使用原始类型的遗留代码.
8. 不能使用泛型类型参数来创建对象.
9. 不能使用泛型类型参数来创建数组.
10. 不能再静态环境中使用累得泛型类型参数
11. 在异常类中不能使用泛型类型参数.
以上是关于java 如何创建一个类或方法能够给出指定位数的一个随机“大数”?的主要内容,如果未能解决你的问题,请参考以下文章