Java50道经典习题-程序8 输入数字求和
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
分析:关键是计算出每一项的值。
1 import java.util.Scanner; 2 public class Prog8{ 3 public static void main(String[] args){ 4 System.out.print("求s=a+aa+aaa+aaaa+...的值,请输入a的值:"); 5 Scanner scan1 = new Scanner(System.in); 6 int a = scan1.nextInt(); 7 8 System.out.print("你想要几个数相加,请输入一个整数:"); 9 Scanner scan2 = new Scanner(System.in);//以空格作为分隔符 10 int n = scan2.nextInt(); 11 scan1.close();//关闭扫描器 12 scan2.close();//关闭扫描器 13 System.out.println(expressed(a,n)+add(a,n)); 14 } 15 //求和表达式 16 private static String expressed(int a,int n){ 17 StringBuffer sb = new StringBuffer(); 18 StringBuffer subSB = new StringBuffer(); 19 for(int i=1;i<n+1;i++){ 20 subSB = subSB.append(a);//将int参数的字符串表示附加到此序列 21 sb = sb.append(subSB);//将int参数的字符串表示附加到此序列 22 if(i<n) 23 sb = sb.append("+"); 24 } 25 sb.append("="); 26 return sb.toString(); 27 } 28 //求和 29 private static long add(int a,int n){ 30 long sum = 0; 31 long subSUM = 0; 32 for(int i=1;i<n+1;i++){ 33 subSUM = subSUM*10+a; 34 sum = sum+subSUM; 35 } 36 return sum; 37 } 38 } 39 /*运行结果 40 求s=a+aa+aaa+aaaa+...的值,请输入a的值:2 41 你想要几个数相加,请输入一个整数:5 42 2+22+222+2222+22222=24690 43 */
The only way to do great work is to love what you do.