java在Main类中编写一个方法f(a,n)用来求a..a(这个数由n个a构成)的值。

题目描述
在Main类中编写一个方法f(a,n)用来求a..a(这个数由n个a构成)的值。在主方法中输入a和n(a和n的范围均为1~9),调用f()求s=a+..+a...a的值,并输出s的值。例如2+22+222+2222+22222(此时a为2,n为5)。如果输入的a或n超过范围,则输出input error。

输入描述
a n

输出描述
a+..+a..a的值

输入样例
3 4

输出样例
3702
主要是这个方法f(a,n),不知道该怎么使用,还有一个超出范围输出input error,

三种方法,求采纳。


import java.util.*;

public class Main {
    public static void main(String[] args) {
        public static void main(String[] args) {
        Main main = new Main();
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int n = sc.nextInt();
        if(a <1 || a > 9 || n<1 || n > 9)
            System.out.println("input error");
       System.out.println(main.f(a,n));
    }
    }

    public int f(int a, int n){
        //思路1:公式变换,同个切换不断乘以10,减少加的次数
//        int sum = 0;
//        int curr = a;
        //2+22+222=2*3+20*2+200*1
//        for(int i = n; i >= 1; i--){
//            sum +=i*curr;
//            curr*=10;
//        }
        //思路2:模拟,通过前一个乘以10再加自己得到实际的值
//        int sum = 0;
//        int curr = 0;
//        for(int i = 1; i <= n; i++){
//            curr=curr*10+a;
//            sum += curr;
//        }
        //思路3:数学,通过数学方法直接得到第i项的值
        int sum = 0;
        for(int i = 1; i <= n; i++){
            int curr = (int) ((Math.pow(10,i)-1)/9*a);
            sum += curr;
        }
        return sum;
    }
}

输入时判断a和n大于等于1小于等于9,

//先把a的原始值保存下来 b = a;
//累加这样 循环n-1次
a = a * 10 + b;
sum +=  a;
//sum就是结果
```java


```