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 */

 

posted @ 2019-04-30 16:41  parkour高手  阅读(453)  评论(0编辑  收藏  举报