高分求解一个java问题!
class   A   {   
 	static   long   i,c,k;  	 
 	public   static   void   main(String[]   args)   {	 
 		for   (i=1,c=0,k=1;i <=64;i++)   { 
 			c=c   +   k; 
                                     		k=k   +   k; 
                                     System.out.println( "前 "+i+ "项和 "+c); 
 		} 
 	} 
 } 
 这个循环到第65次的时候,long类型就产生溢出了,谁能给我得出正确的结果,不要溢出的那种错误,就是不管多大的数相加,都输出正确的结果,而不是输出溢出的结果值-1
------解决方案--------------------BigInteger
------解决方案--------------------如楼上所说 
 基本类型是不行了 
 用那些专门处理大数字的类吧
------解决方案--------------------public static void main(String[] args) { 
   BigInteger c = new BigInteger( "0 "); 
   BigInteger k = new BigInteger( "1 ");		 
   for (int i = 1; i  <= 64; i++) { 
     c = c.add(k); 
     k = k.add(k); 
     System.out.println( "前 " + i +  "项和 " + c.toString()); 
   } 
 }
------解决方案--------------------呵呵,算 2 的 i 次方减 1,long 的数据范围是 -2^63 ~ +2^63-1 要比 2^64-1 小,所以就要溢出了。我上面用 BigInteger 就可以解决了,BigInteger 的精度范围仅受计算机内存的限制。