java数组实现大数相加package com.nileader.big.entity;
public class BigInt {
private String data_str; //原始数据
private int digit; //数据位数
private int[] data; //大数
private boolean carry = false; //进位标识符
/**
* setter and getter
*/
public boolean isCarry() {
return carry;
}
public void setCarry(boolean carry) {
this.carry = carry;
}
public String getData_str() {
return data_str;
}
public void setData_str(String data_str) {
this.data_str = data_str;
}
public int[] getData() {
return data;
}
public void setData(int[] data) {
this.data = https://www.04ip.com/post/data;
}
public int getDigit() {
【java存大数的代码 java大数据存储】return digit;
}
public void setDigit(int digit) {
this.digit = digit;
}
//构造方法
public BigInt(){};
public BigInt(String str_data)
{
this.setData_str(str_data);
}
//基本操作
/**
* 形成大数 初始化
*/
public void initBInt()
{
this.setDigit( this.getData_str().length() );
this.data = https://www.04ip.com/post/new int[this.getDigit()];
//将字符组成的大数逆序放入int[] data中
for(int i = 0, j=this.getDigit() ; i
{
// 1104 -- data[0] = '4',data[1] = '0',data[2]=1, data[3]= '1'
this.data[i] = Integer.parseInt( this.getData_str().substring(j-1,j) );
}
}
/**
* 进行大数相加操作
*/
public void add( BigInt bint)
{
//this的位数大于bint的位数
if( this.getDigit()bint.getDigit() )
{
int[] datatemp = this.getData();
this.setData( bint.getData());
bint.setData( datatemp);
this.setDigit(this.getData().length);
bint.setDigit(bint.getData().length);
}
//将短的那个先加完
int i =0;
for(; i
{
int tdata = https://www.04ip.com/post/0;
//上次运算有进位
if( this.isCarry())
{
tdata = https://www.04ip.com/post/this.getData()[i]bint.getData()[i]1;
//取消进位标识
this.setCarry(false);
}
else tdata = https://www.04ip.com/post/this.getData()[i]bint.getData()[i] ;
//本次结果无进位
if(tdata 10) this.data[i] = tdata;
//本次结果有进位
else if(tdata =https://www.04ip.com/post/10)
{
this.data[i] = tdata -10;
this.setCarry(true);
}
} //短的那个加完了
//剩余数的处理
for(;i
{
//有个进位的
if(this.isCarry())
{
int tdata = https://www.04ip.com/post/this.data[i] 1;
if(tdata =https://www.04ip.com/post/10) this.data[i] = tdata -10;
else
{
this.data[i] = tdata;
this.setCarry(false);
}
}
}
//对最高位益处检测
if(this.data[this.getDigit()-1] == 0)
{
int[] tdata = https://www.04ip.com/post/new int[this.getDigit() 1];
System.arraycopy(this.getData(), 0, tdata, 0, this.getDigit());
tdata[this.getDigit()] = 1;
this.setData(tdata);
}
}
}
其中代码段
//对最高位益处检测
if(this.data[this.getDigit()-1] == 0)
{
int[] tdata = https://www.04ip.com/post/new int[this.getDigit() 1];
System.arraycopy(this.getData(), 0, tdata, 0, this.getDigit());
tdata[this.getDigit()] = 1;
this.setData(tdata);
}
给我写一个求一个数组里面的最大值的java代码,谢谢!public class Test {
public static void main(String[] args) {
int[] k = {1, 12, 15, 42, 3, 5, 8, 4};
// 冒泡排序(升序)
for (int i = 0; ik.length - 1; i) {
for (int j = i1; jk.length; j) {
if (k[i]k[j]) {
int t = k[i];
k[i] = k[j];
k[j] = t;
}
}
}
System.out.println("最大值是: "k[k.length-1]);
}
}
java如何存储巨大的数字比如100!存储100的阶乘,这种超大数字,java 还是提供了一些类的比如
1: 使用BigInteger或者 BigDecimal...
import java.math.BigDecimal;
import java.math.BigInteger;
// 测试类
public class Demo {
public static void main(String[] args) {
BigDecimal s1 = jieCheng(100);//BigDecimal存100的阶乘还是没有问题的
BigInteger bi=s1.toBigInteger();//BigInteger存100的阶乘也可以
System.out.println(bi);
System.out.println(s1);
}
public static BigDecimal jieCheng(int num) {
BigDecimal sum = new BigDecimal("1");
if (num0) {
throw new IllegalArgumentException("参数不能为负!");
}
for (int i = 1; i = num; i) {
sum =sum.multiply(new BigDecimal(i));//循环进行累乘
}
return sum;// 返回结果字符串
}
}
如果是BigDecimal都处理不了超大数字,那么可以使用String来存储
String str ="123...";//这种方式,是明文写入代码的,字符串长度不能太长.
所以太长的文本应该写入字符串文本中. 使用的时候使用IO进行读取
求代码:斐波那契数列:1,1,2,3,5,8,13,21…. 用java程序输出前100个数.希望用char数组存储大数 。//方法很多,这是一种
int a=0;
int b=1;
System.out.print("斐波那契数列:1,");
for(int i=0;i10;i){//斐波那契数列加到后面数字会非常大会超出int型的范围 , 想执行自己替换吧
int c=a b;
System.out.print(c ",");
a=b;
b=c;
}
求Java的最大数和最小数max=numl=num2?numl: num2; //将num1和num2中较大的数赋给max
min=numl=num2? num1: num2; //将num!和num2中较小的数赋给min
这两语句中的“numl”你写成了英文字母“l”,把他们换成数字“1”就好了
JAVA大数类库初始化BigInteger问题BigInteger(byte[] val)
将包含 BigInteger 的二进制补码表示形式的 byte 数组转换为 BigInteger 。
BigInteger(int signum, byte[] magnitude)
将 BigInteger 的符号-数量表示形式转换为 BigInteger 。
BigInteger(int bitLength, int certainty, Random rnd)
构造一个随机生成的正 BigInteger,它可能是一个具有指定 bitLength 的素数 。
BigInteger(int numBits, Random rnd)
构造一个随机生成的 BigInteger,它是在 0 到 (2numBits - 1)(包括)范围内均匀分布的值 。
BigInteger(String val)
将 BigInteger 的十进制字符串表示形式转换为 BigInteger 。
BigInteger(String val, int radix)
将指定基数的 BigInteger 的字符串表示形式转换为 BigInteger 。
BigInteger是用来存放整数的你放字符串肯定是不行的可以转成ascii等以数字的形式存放字符串
java存大数的代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java大数据存储、java存大数的代码的信息别忘了在本站进行查找喔 。
推荐阅读
- flutter控件自动换行,flutter 自定义按钮
- c语言设计程序可以查找学生,c语言程序设计查询功能
- 音飞行乐游戏推荐,飞行 音乐
- java面板样式代码,java面板的作用
- vbnet程序重写 vb重置怎么写
- wordpress文章中带轮播图,wordpress设置首页轮播
- 虚拟机怎么放大图像尺寸,vmware虚拟机怎么放大
- 拼命直播文案,关于直播的说说
- c语言函数库求阶乘 c语言中用函数求阶乘