对于这个题最难的地方应该就是那个2、22、222、......等等这个数据怎么产生的问题。
那么来让我们想一个问题 ,对于“2”来说怎么---->变成“22”,我们知道要让个位变成十位的话,应该就是直接乘以10了,那么2乘以10之后变成了了20,这时候只要再加个个位2就称为了22,那么百位就是在十位的基础上乘以10再加上个位,千位就是在百位的基础上乘以10加上个位,一次类推。那么我们就可以很容易的理解了。我是这样理解的,个位因为不管哪个位(十位、百位、千位、....等等)都需要,那么我们需要一个变量来接收这个。并且不能改变这个个位的值。
Scanner scanner = new Scanner(System.in);
System.out.println("请输入几个数相加");//这个就是比如: a+aa+aaa+aaaa,这个a的长度
int sc = scanner.nextInt();
System.out.println("请输入输入你想相加的数字:");//这个就是我们要进行运算的那个值
int n= scanner.nextInt();
int i = n; //首先我们定义了一个整形 i 来接收这个“个位”的值
int num = 1; //这个 num 是我们需要计算数值相加的和。
for (int j = 0; j <sc-1 ; j++) { //我们判断这个这个数的“长度”,因为个位不需要乘10,所以我们循环长度-1就行了
i = i*10+n; //我们对这个进行运算的值先乘以10加再加上个位
num = num+i; //给num赋值 这个循环的第一次就是 把个位数“2”加上十位数“22”,后面就是加上百位、千位、..等等
}
System.out.println(num); //最后输出这个和num就行了
总而言之这道题只需要弄懂那个 2 、22 、222 、2222怎么形成的就行了。就是个位有点特殊而已。把这个搞清楚 这道题就迎刃而解了。