A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© chad8753 中级黑马   /  2015-7-28 00:10  /  561 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
import java.util.Scanner;

public class Prog8{
        public static void main(String[] args){
                System.out.print("求s=a+aa+aaa+aaaa+...的值,请输入a的值:");
                Scanner scan = new Scanner(System.in).useDelimiter("\\s*");//以空格作为分隔符
                int a = scan.nextInt();
                int n = scan.nextInt();
                scan.close();//关闭扫描器
                System.out.println(expressed(2,5)+add(2,5));
        }
        //求和表达式
        private static String expressed(int a,int n){
                StringBuffer sb = new StringBuffer();
                StringBuffer subSB = new StringBuffer();
                for(int i=1;i<n+1;i++){
                  subSB = subSB.append(a);
                  sb = sb.append(subSB);
                  if(i<n)
                    sb = sb.append("+");
                }
                sb.append("=");
                return sb.toString();
        }
        //求和
        private static long add(int a,int n){
                long sum = 0;
                long subSUM = 0;
                for(int i=1;i<n+1;i++){
                        subSUM = subSUM*10+a;
                        sum = sum+subSUM;
                }
                return sum;
        }
}

5 个回复

倒序浏览
。。。。。。。。。。。。。。。。。。。。。不错
回复 使用道具 举报
这个挺不错的!!
回复 使用道具 举报
学习了
回复 使用道具 举报
楼主厉害,v587
回复 使用道具 举报
楼主厉害,v587
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马