日期:2018.8.19
星期日
博客期:006
说个事,本来想把博客园做一个交流平台的,可是交流度有点少...嗯...我看我还是把这个平台当作经验传授平台和自己的作品发布平台吧!Java的知识详解,我在这里说再多,跟别的教程平台又会冲突!浪费那么多的时间不值得。嗯,之前的那些教程啥的我就弃坑啦!这么大的坑我肯定无能为力啊!
好吧,这次来看看正事!我本来想着也写一边 Java 的 Bignum 类的,但 Java 内部是有这个类的啊!这在我写了一半的时候,给我报错了,说是重名了啊!我这才想起来,不过确实可以通过查找替换啊!但这1400多行,我得累死啊!用C++写的时候,都废了不少的劲头。算了,放弃了,不是我这个人不行,是这没啥用啊!还有本来想借着C++的STL书来讲一讲库函数呢!老师说过哈~大厚书不能买...这本不厚(呵呵),我愣是等了将近3个月,还是没有发货...看下面几张图吧!我就不说了。
今天国际惯例是写博客啊!所以之前的准备工作交给周一至周六去做!大家可以仿照我之前(上一个博客的图片)的方式来写程序啊!这样可以声明你写的日期和内容,因为你前期练习都是基础性的东西,所以文件的关联性不太大!这种方法就非常好!啊!非常好!反正写也写了,展示一部分吧!
//主函数
public static void main(String args[]){
}
//--------------<内部数据存储>--------------//
//---
protected char []num=new char [100];
protected boolean ifhavef;
//--------------<附加小函数>--------------//
//---
//数据类型转换
//===int和char表示变换
public static int change(char x){
int y=(int)x+'0';
return y;
}
public static char change(int x){
char y;
switch(x){
case 0:y='0';break;
case 1:y='1';break;
case 2:y='2';break;
case 3:y='3';break;
case 4:y='4';break;
case 5:y='5';break;
case 6:y='6';break;
case 7:y='7';break;
case 8:y='8';break;
case 9:y='9';break;
default:y=' ';break;
}
return y;
}
//===int和char*的转换
public static int change_s(char x[]){
int y;
boolean havef=(x[0]=='-');
char []z;
z=x;
if(havef){
Bignum.runformer(z);
}
if(havef){
y=-y;
}
return y;
}
public static void change_s(int x,char y[]){
}
//--------------<静态小函数>--------------//
//---
//位数函数
//===[长度前移更新 ]
public static void runformer(char x[])
{
int m=0;//执行前移的次数
for(int i=0;i<100;i++)//测定m的值
{
if(x[i]!='0')
break;
m++;
}
if(m==0)
return ;
for(int i=0;x[i+m-1]!=' ';i++)//前移
x[i]=x[i+m];
if(x[0]==' ')
{
x[1]=x[0];
x[0]='0';
}
}
//===[字符串位数升高 [后面补 0 ](默认升高 1 位) ]
public static void run0(char x[])
{
int zz=Bignum.litude(x);
x[zz]='0';
x[zz+1]=' ';
}
public static void run0(char x[],int ct)
{
for(int i=1;i<=ct;i++)
Bignum.run0(x);
}
//===[长度后移 x位(默认后移 1 位)]
public static void runlatter(char x[])
{
char s[]=new char [100];
int i;
for(i=0;i<100&&x[i]!=' ';i++)
s[i+1]=x[i];
s[i+1]=' ';
s[0]='0';
x=s;
}
public static void runlatter(char x[],int t)
{
char s[]=new char [100];
s[1]=x[0];
int i;
for(i=0;i<100&&x[i]!=' ';i++)//后移一次
{
s[i+1]=x[i];
}
s[i+1]=' ';
s[0]='0';
x=s;
if(t!=1)//递归
Bignum.runlatter(x,t-1);
}
//---
//---
//相反数
public static Bignum1 anti(Bignum1 x)
{
Bignum1 z=new Bignum1(x.num);
z.setf(!x.ifhavef);
z.test();
return z;
}
//交换函数
public static void exchange(Bignum1 x,Bignum1 y)
{
Bignum1 z=new Bignum1(x);
x.set(y.num,y.ifhavef);
y.set(z.num,z.ifhavef);
x.test();
y.test();
}
//返回 10 的 i 次幂
public static Bignum1 Bignum::run1(int i)
{
Bignum1 z;
z.set("1",false);
Bignum.run0(z.num,i);
z.test();//无用
return z;
}
//---
//---
//长度函数
//===[测量整形、大数或字符串的长度]
//------准确的长度(不含' ')
//------int最大长度为10
public static int litude(int x)
{
int num=10;
int z=1000000000;
if(x==0)
return 1;
while(num!=1)
{
if((x/z)!=0)
break;
num--;
z=z/10;
}
return num;
}
public static int litude(char x[])
{
int m;
Bignum.runformer(x);
for(int i=0;i<100;i++)
if(x[i]==' ')
{
m=i;
break;
}
return m;
}
public static int litude(Bignum1 x)
{
return Bignum.litude(x.num);
}
//===[判断是否 x和 y相同长度 ]
public static boolean ifsamelong(Bignum1 x,Bignum1 y)
{
return(Bignum.litude(x)==Bignum.litude(y));
}
//---
//--------------<output、intput函数>--------------//
//---
//set函数
//===[设置ifhavef]
public void setf(boolean ifhavef_s)
{
ifhavef=ifhavef_s;
}
//===[设置num]
public void setnum(char x)
{
char arrays[]=new char [100];
arrays[1]=' ';
arrays[0]=x;
setnum(arrays);
}
public void setnum(char num_s[])
{
num=num_s;
}
//===[设置num和ifhavef]
public void set(char num_s[],boolean ifhavef_s)
{
setf(ifhavef_s);
setnum(num_s);
test();
}
public void set(boolean ifhavef_s,char num_s[])
{
set(num_s,ifhavef_s);
}