溢出:在用程序数据类型时,往往会出现当n取大时,数据的精度会和结果想要的不一致,需要选取合适的数据类型
比如求8+88+888+8888+......前12项的和n=12;结果为209876543199
public class 李小龙 {
public static void main (String args[]){
long s=0,a=8,item=a,n=100,i=1;
for(item=1;i<=n;i++){
s=s+item;
item=item*10+a;
}
System.out.println(s);
}
}当n取100时,结果就会出现负数如图
打印杨辉3角前50行,但n变大就不对例如:
package d;
public class ArrayDemo {
public static void main(String args[]){
long a [][]=new long[50][50];//定义数组
for(int i=0;i<a.length;i++)//初始化
{
for(int j=0;j<a[i].length;j++)
{
a[i][j]=1;
}
}
for(int i=2;i<a.length;i++)
{
for(int j=1;j<i;j++)
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(int i=0;i<a.length;i++)//打印
{
for(int j=0;j<=i;j++)
{
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
}
}
但是可以用 JAVA BigInteger正确代码实现如下:
如图: