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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Fangjie 中级黑马   /  2016-6-12 15:11  /  329 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题目:求s=a+aa+aaa+aaa...a的值,其中a是一个整数。例如2+22+222+2222+22222(此时共用5个数相加,几个数相加由键盘控制)
// 在控制台输出提示信息,并接受控制台输入的数据
                System.out.println("请输入要加的数与加的次数,格式如下:x,x");
                Scanner sc = new Scanner(System.in);
                String str = sc.nextLine();
                sc.close();

                // 判断如果发现输入的字符串中有中文逗号则替换成英文逗号
                if (str.contains(",")) {
                        str.replace(",", ",");
                }
                // 定义一个sb缓存区
                StringBuffer sb = new StringBuffer();
                // 分割控制台输入的数据,并转换成字符串数组将值赋给数num变量和count加的次数变量
                String[] arr = str.split(",");
                String num = arr[0];
                int count = Integer.parseInt(arr[1]);

                // 新建一个字符串数组,用于存放num累加后的字符串
                String[] buf = new String[count];
                // 开始累加,判断为null直接赋值,不为空才累加
                for (int x = 0; x < count; x++) {
                        for (int y = 0; y<=x; y++) {
                                if (buf[x] == null) {
                                        buf[x] = num;
                                } else {
                                        buf[x] += num;
                                }
                        }
                }

                // 计算数的累加次数之和
                int sum = 0;
                // 包存放累加公式至缓冲去内,便于控制台查看
                for (String s : buf) {
                        sb.append(s + "+");
                        sum += Integer.parseInt(s);
                }
                // 删除最后一个不要的+号
                sb.deleteCharAt(sb.length() - 1);
                // 在控制台输出打印结果
                System.out.println(sb.toString() + "=" + sum);

点评

赞!  发表于 2016-6-12 21:00

2 个回复

正序浏览
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马