利用JAVA实现2+22+222+2222+22222的问题

来源:互联网 发布:广发证券交易软件 编辑:程序博客网 时间:2024/06/07 23:29

如果指定基数为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~

原创粉丝点击