java大数进制转换_java自定义大数(进制可在2-62之间相互转换)_new详解.doc

HYPERLINK "/xinshijimanon/article/details java自定义大数(进制可在2~62之间相互转化)

闲着没事做,写了一个自定义大数,并实现了两个大数的加减乘除以及比较,以及2~62进制任意数(包括但不限于正整数与负整数)的相互转化

大数类: BigNumber.java

/*

* 0~9用0~9表示,10~35用A~Z表示,36~61用a~z表示

*/

@SuppressWarnings("serial")

public class BigNumber extends Exception{

private String MyNumber;//大数

private int SystemNumber;//进制数

public BigNumber(){

this("0",10);

}

public BigNumber(String MyNumber){

this(MyNumber,10);

}

public BigNumber(String MyNumber,int SystemNumber){

this.MyNumber=MyNumber;

this.SystemNumber=SystemNumber;

this.Islegal();

}

public String getMyNumber() {

return this.MyNumber;

}

public void setMyNumber(String myNumber) {

this.MyNumber = myNumber;

}

public int getSystemNumber() {

return this.SystemNumber;

}

public void setSystemNumber(int systemNumber) {

this.SystemNumber = systemNumber;

}

public void Islegal(){//判断该字符串是否合法

if(this.MyNumber==null||this.MyNumber.length()==0){//大数为空或大数字符串长度为0

throw (new NumberFormatException("错误!大数为空或大数字符串长度为0 "+this.MyNumber));

}

if(this.SystemNumber<=1||this.SystemNumber>=63){//进制数不合法

throw (new NumberFormatException("错误!进制数不合法 "+this.SystemNumber));

}

if(this.MyNumber.equals("+")||this.MyNumber.equals("-")||this.MyNumber.equals(".")){

throw (new NumberFormatException("错误!大数不合法 "+this.MyNumber));

}

if(this.MyNumber.equals("+.")||this.MyNumber.equals("-.")){

throw (new NumberFormatException("错误!大数不合法 "+this.MyNumber));

}

for(int i=0,a,k=-1;i

a=Chartoint(this.MyNumber.charAt(i));

if(i!=0&&(a==-1||a==-2)){

throw (new NumberFormatException("错误!符号位只能在大数首部 "+this.MyNumber.charAt(i)+"("+i+")"));

}

if(a>=this.SystemNumber||a==-4){

throw (new NumberFormatException("错误!该字符不在该进制合法字符中 "+this.MyNumber.charAt(i)+"("+i+")"));

}

if(a==-3){

if(k==-1){

k=i;

}else{

throw (

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值