這道題目是在一次面試中遇到的,難度不大...... 題目 :求 s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。 程式分析: 此道題需要輸入兩個數,第一個數m用來組成每一位加數,第一位加數由一個m組成,第二位加數由兩個m組成......以此類推;第二個數n表示一共幾個數相加。比如:你輸入一個m為2,n為3,就表示要計算2+22+222的值。很容易發現,加數表達式的每一項,後一項是前一項的值乘以十再加上m,是以我們可以用這個方法來擷取每一項,在擷取每一項的同時拼接整個字元串以及計算整體結果. 代碼:
import java.util.Scanner;
import org.junit.Test;
public class Addend {
/**
* 用于相加的方法
* @param m
* @param n
* @return
*/
public String addend(int m , int n) {
//定義一個變量用來存放整體結果
StringBuffer result = new StringBuffer();
//定義一個變量用來存放加法計算結果
int addResult = 0;
//定義一個變量用來計算加法表達式的每一項
int tempNum = 0;
for(int i = 0 ; i < n ; i ++) {
tempNum = tempNum * 10 + m;
//拼接加數表達式每一項
result.append(tempNum);
//如果是加數表達式的最後一項則拼接"=",否則拼接"+"
if(i == n-1) {
result.append("=");
} else {
result.append("+");
}
//計算結果
addResult += tempNum;
}
result.append(addResult);
return result.toString();
}
//測試方法
@Test
public void test() {
//先從鍵盤擷取m和n
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
sc.close();
//調用相加方法
String result = addend(m, n);
System.out.println(result);
}
}
運作結果:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2QvwVe0lmdhJ3ZvwFM38CXlZHbvN3cpR2Lc1TPB10QGtWUCpEMJ9CXsxWam9CXwADNvwVZ6l2c052bm9CXUJDT1wkNhVzLcRnbvZ2Lc5WNXF2as1WYxw2RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39jMygTNyITN0EjNxATM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)