用java编译,求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。 例如5+55+555+5555+55555(此时共有5个数相加)。 例如: 输入:3 输出:3+33+333=369 输入:2 输出:2+22=24
时间: 2024-10-12 19:13:32 浏览: 40
2008~2009学年度第二学期《编译原理》考试试卷-A[参考].pdf
在Java中,你可以编写一个函数来计算给定数字a重复自身指定次数后的和。这是一个递归的问题,可以使用循环或者字符串替换的方式来解决。这里提供一个简单的非递归解决方案:
```java
public class SumOfRepeatingDigits {
public static void main(String[] args) {
System.out.println(sumOfRepeatingDigits(3)); // 输出 369
System.out.println(sumOfRepeatingDigits(2)); // 输出 24
}
public static long sumOfRepeatingDigits(int a) {
long sum = 0;
String numStr = Integer.toString(a);
for (int i = 0; i < numStr.length(); i++) {
sum += Long.parseLong(numStr.substring(i));
}
return sum;
}
}
```
这个`sumOfRepeatingDigits`函数首先将输入的数字转换成字符串,然后遍历字符串,每次取一个字符(即当前数字的各位),将其作为一位数相加到总和中。因为可能涉及到非常大的数值,所以使用`Long.parseLong`来处理字符串表示的大数。
注意:对于较大的输入,可能会超出long类型的最大范围,需要考虑溢出问题。如果仅限于较小的数字,那么这个问题可以忽略。
阅读全文