题目 :求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
先分析这个式子:S=a+aa+aaa+aaaa....,后一项的值是前一项的值*10+a,键盘控制输入,那就Scanner,试着写一写代码:
Scanner sacn = new Scanner(System.in);
System.out.println("请输入a的值 ");
int a = sacn.nextInt(); //2 22 222 2222 22222
System.out.println("你想让几个数相加 ");
int quantity = sacn.nextInt();
int s = 0;
for (int index = 0;index<quantity;index++){
s = s * 10+a; //2 2+22(2*10+2) 2+22+222(22*10+2)
//s = 0*10+2=2 s = 2*10+2=22 s=22*10+2=222
//s = s + s; ????? 不对得写个中间变量接收
}
遇到问题了,每一项的值都有了,加不起来
愚蠢的我脑子里一件事想到的居然是整个数组,把这些数据都放进去然后遍历相加。
可我转念一想,反正是找个能接收的数据地方,那还不如直接整个变量呢,于是代码就变成了:
int s = 0;
int median = 0;//中间值 做接收
for (int index = 0;index<quantity;index++){
median = median * 10+a; //2 2+22(2*10+2) 2+22+222(22*10+2)
//s = 0*10+2=2 s = 2*10+2=22 s=22*10+2=222
//s = s + s; ????? 不对得写个中间变量接收
s = median + s;
}
靠,溢出了 得他喵的long类型,改了类型之后再试试:
不管咋整,实现了!