用java实现 s=a+aa+aaa+aaaa+aa…a 的值,a是用户任意输入的数字,n为最后一个累加的数的位数(累加数的个数)
1.分析
1.1 如何进行输入?
需要用户输入一个数字意味着需要建立一个Scanner对象,用来获取接收的内容
而接收的内容中的内容是数字,因而选择Scanner对象名.nextInt()方法
注意:Scanner对象名.next()方法也可以获取键盘中输入的数字,但是它是以字符串形式获取的,你需要把字符串通过Integer包装类把其转换成int类型的数据,这样显然比.nextInt方法麻烦,因此一般选择.nextInt()方法接收键盘中输入的数值型数据。
//将String类型的数值型数据转换成int类型的数据的方法如下:
String name=s.next();
Integer t=new Integer(name);
System.out.println(t==12);
int temp=t;
//此时temp为int类型的数值型数据
1.2 数字的变化规则是什么?
以s=2+22+222+2222为例
我们发现22=2*10+2
222=22*10+2
2222=222*10+2
也就是说从第二个数开始,每个数=前一个数*10+每位上面的数值(手动输入)
1.3 如何判断加到什么时候截至?
s=1+11;----------需要进行加法运算的数的个数为2,加法运算的最后一位的位数为2
s=3=33+333; ----------需要进行加法运算的数的个数为3,加法运算的最后一位的位数为3
s=2+22+222+2222 ----------需要进行加法运算的数的个数为4,加法运算的最后一位的位数为4
通过上面三个例子,我们不难发现加法运算的截至条件是,判断是否达到了加法运算的数的个数即是否达到了加法运算的次数------->这个也可以通过键盘进行输入的
1.4 如何按照a+aa+aaa+aaaa这种形式进行结果的输出?
需要对每个中间值进行打印结果的输出,那就需要在for循环里面进行打印;
当不是最后一个数字打印时,则要打印数字和加法符号
当是最后一个数字打印时,则需要打印数字和等号
循环结束后再打印得到的求和结果即可.
2.思路总结
a.定义一个Scanner对象,通过.nextInt()方法来接收输入的数值位(每一位上面的数字)m
b.通过.nextInt()方法接收输入的加法运算的数的个数n
c.定义一个变量temp用于存储数值位,目的是实现加法运算值的变化
d.建立一个for循环,用于判断是否加到了最后一位数
e.判断是否是最后一位数字,若不是,则打印数字和加法符号
若是,则只需要打印数字和等号
f.把需要进行加法运算的数加入sum中,然后把该数变为下一个需要进行加法运算的数
d.输出得到的求和结果
3.源代码
import java.util.Scanner;
public class Work{
public static void main(String[] args) {
System.out.println("求s=a+aa+aaa+aaaa+aa...a,其中a为每位上面的相同数值,n为加法运算次数");
Scanner scanner=new Scanner(System.in);
System.out.println("请输入a的数值:");
int value=scanner.nextInt();
System.out.println("请输入n的数值:");
int n=scanner.nextInt();
int sum=0,temp=value;
for (int i = 0; i <n; i++) {
if(i==n-1){
System.out.print(temp+"=");
}else{
System.out.print(temp+"+");
}
sum+=temp;
temp=temp*10+value;
//注意加法运算右边的数为相同数值,不能加上temp
}
System.out.println(sum);
}
}