利用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();       
  }
}

测试结果如下
利用JAVA实现2+22+222+2222+22222的问题_第1张图片

Enjoy it~

你可能感兴趣的:(java基本语法,个人作业)