题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。a的值以及几个数相加由键盘控制。
例如 假设a=2,键盘输入b=5
则sum = 2+22+222+2222+22222(此时共有 5 个数相加),
下面代码里的 注释部分的 程序分析仔细推敲
/*
【程序 8 输入数字求和】
题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。a的值以及几个数相加由键盘控制。
例如 假设a=2,键盘输入b=5
则sum = 2+22+222+2222+22222(此时共有 5 个数相加),
程序分析:关键是计算出每一项的值。
1 1*a sum1= 10^(1-1)*2 =2 sum = sum+sum1=0+2=2
2 1*a+10*a sum1= sum1 + 10^(2-1)*2 =2+20=22 sum = sum+sum1=2+22=24
3 1*a+10*a+100*a sum1= sum1 + 10^(3-1)*2 =22+200=222 sum = sum+sum1=2+22+222=246
4 1*a+10*a+100*a+1000*a
5
*/
import java.util.Scanner;
class Demo8{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入正整数a的值:");//a应用于 2 22 222 2222
int a = sc.nextInt();
System.out.println("请输入正整数b的值:");//b是最终几个数相加
int b = sc.nextInt();
int sum1 = 0;//sum1= 10^(1-1)*2 =2
int sum = 0;//sum = sum+sum1=0+2=2
for(int x = 1; x<=b;x++ ){
int m = x-1;//实现(1-1)
int s = (int) Math.pow(10,m); //实现10^(1-1)
sum1 = sum1 + (s*a); //实现sum1= 10^(1-1)*2 =2
sum = sum +sum1; //实现sum = sum+sum1=0+2=2
if(x<b){
System.out.print(sum1+"+");//输出sum1,后面还要加一个加号,便于最后展示2+22+222+2222这种式子
}else{
System.out.print(sum1);//最后一个sum1后不需要+
}
}
System.out.println("="+sum);
}
}