1. 程式人生 > >利用JAVA實現2+22+222+2222+22222的問題

利用JAVA實現2+22+222+2222+22222的問題

如果指定基數為2,次數為5, 則求2+22+222+2222+22222的值

分析

這個問題乍眼一看是有點麻煩的,但是靜下來仔細分析還是有一些門路的。
我們從每一項中可以總結出規律:

項數n 值a 拆分
1 2 0*10+2=2
2 22 2*10+2=22
3 222 22*10+2=222
4 2222 2222*10+2=2222
5 22222 22222*10+2=22222
…… …..
n 2222222… [第(n-1)項的a]*10+a

將這個問題分析透徹,整個問題就很簡單了。
首先我們需要設定兩個變數,分別為a和sum。變數a是用來存放計算出來每一項所對應的值,而變數sum則是起到了一個累加的作用。至於迴圈結構的話就用簡單的for()

迴圈來完成,題目要求是有5項,則迴圈次數為5次,那麼我們就可以寫出以下的原始碼

package com.tencentos;
public class Week1homework3 {
public static void main(String[] args) {
          int a=0,sum=0;
            for(int n=1;n<=5;n++)
          {
              a=(a*10)+2;
              sum+=a;
          }
            System.out.print("sum="+sum);
        }
}

每當變數a進行完運算後都會存放到變數sum當中,這裡的sum起到了一個累加器的作用,最終輸出變數sum就可以了。輸出的結果如下

這裡寫圖片描述

其實在這個題的基礎上,我們可以進一步的升級,基數與累加次數都可以我們人為的設定,進而可以增加與使用者之間的互動性。在這裡我們可以設定基數為x,累加次數定為y,這裡的x與y都是使用者所敲入的,其實也沒什麼難度,就是在上述程式碼中加入Scanner工具即可,不過微微這麼一變動,整個程式就變的不那麼死板了。修改後的原始碼如下

package com.tencentos;
import java.util.Scanner;
public class Week1homework3 {
public static void main(String[] args) {
    Scanner scan=new Scanner(System.in);
    System.out.print("Please input the basic number:");
    int x=scan.nextInt();
    System.out.print("Please input the times:");
    int y=scan.nextInt();
          int a=0,sum=0;
            for(int n=1;n<=y;n++)
          {
              a=(a*10)+x;
              sum+=a;
          }
            System.out.print("sum="+sum);
            scan.close();       
  }
}

測試結果如下
這裡寫圖片描述

Enjoy it~