求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加 (a也可以是10,99,919等)

以下是Java类:

 

   
   
   
   
  1. public class CalculateA { 
  2.     //所要求的计算表达式长度 
  3.     private int num; 
  4.     //a的值 
  5.     private int a; 
  6.  
  7.     public CalculateA(int num, int a) { 
  8.         // TODO Auto-generated constructor stub 
  9.         this.num = num; 
  10.         this.a = a; 
  11.     } 
  12.  
  13.     public long getCalculatedResult() { 
  14.         long result = 0L; 
  15.         int length = String.valueOf(a).length(); 
  16.  
  17.         double repeate = Math.pow(10, length); 
  18.  
  19.         int i = 0
  20.         int k = 1
  21.         while (i <= num - 1) { 
  22.             result += (num - i) * a * k; 
  23.             i++; 
  24.             k *= repeate; 
  25.         } 
  26.         return result; 
  27.  
  28.     } 

测试类:

 

   
   
   
   
  1. import junit.framework.Assert; 
  2.  
  3. import org.junit.Test; 
  4.  
  5. public class CalculateATest { 
  6.  
  7.     @Test 
  8.     public void testGetCalculatedResult() { 
  9.         //a是0的情况 
  10.         CalculateA calculate=new CalculateA(50); 
  11.         Assert.assertEquals(calculate.getCalculatedResult(), 0); 
  12.          
  13.         //0 
  14.         calculate=new CalculateA(21); 
  15.         Assert.assertEquals(calculate.getCalculatedResult(), 12); 
  16.          
  17.         //a>9的情况 
  18.         calculate=new CalculateA(310); 
  19.         Assert.assertEquals(calculate.getCalculatedResult(), 102030); 
  20.     } 
  21.      
  22.