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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 巩彪 初级黑马   /  2012-8-15 00:29  /  1466 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请编写一个程序,程序的功能是:求Sn=a+aa+aaa+…+aaa…a ,
最后一项为n个a,其中a是一个数字。
例如:a为2、n为5时,则S5=2+22+222+2222+22222。要求a和n都要从键盘输入。

4 个回复

倒序浏览
不知道你这是不是测试题 可能禁答,少年 自己多想想 我给你提供一个思路:
n=5时  不就是 2X1+2X10+2X100+2X1000+2X10000=2x(1+10+100+1000+10000)
1+10+100+1000+10000可以看成是 1X10的0次方+1X10的1次方+1X10的2次方+.....+1X10的4次方
写个方法就是static void getNum(int a ,int n){.....}在main函数中调用此方法

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
public class Test{
        //总和全局变量
        public static int sum;

        public static void main(String [] args){
                System.out.println(calculate(2,5));
        }

        public static int calculate(int initial_num,int n){
                //定义一个局部变量保存每次需要加的数
                int step=initial_num;
                综合初始值为需要叠加的数
                sum=initial_num;
                for(int i=1;i<n;i++){
                        //每次加的数都是上一个数10倍再加一个叠加数,也就是你所说的a
                        //总共循环n-1次,因为第一个数已经以初始值的形式赋给了sum了
                        step=step*10+initial_num;
                        sum+=step;
                }
                return sum;
        }
}

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
刚看到,就写了个方法,你试试,绝对按照你的要求
  1. package com;

  2. import java.util.Scanner;

  3. public class Test1 {
  4.         public static void main(String[] args) {
  5.                 Scanner s=new Scanner(System.in);//扫描控制台输入的参数
  6.                 String str=s.next();//在控制台输入方式为如:2,5    这要注意!!!!!!!!
  7.                 String str1[]=str.split(",");//字符串按指定字符拆分
  8.                 test1(Integer.parseInt(str1[0]),Integer.parseInt(str1[1]));//调用方法
  9.         }
  10.         public static void test1(int a,int b){
  11.                 String str="";
  12.                 int c=0;
  13.                 String sum="";
  14.                 String sum_="sum_";
  15.                 for (int i = 0; i < b; i++) {
  16.                         c=Integer.parseInt(str+=a);//把数字通过字符串相加,然后再转成数字
  17.                         sum+=(c+"+");
  18.                         if(i==b-1){
  19.                                 sum=sum.substring(0,sum.length()-1);//截取字符串去掉最后的“+”
  20.                                 sum_=sum_+String.valueOf(b)+"="+sum;//拼接字符串为sum_5=2+22+222+2222+22222,其中5为输入的第二个参数
  21.                         }
  22.                 }
  23.                 System.out.println(sum_);
  24.         }
  25. }
复制代码
回复 使用道具 举报
本帖最后由 王海亮 于 2012-8-15 09:04 编辑


你也可以有string类型追加
String S_num=“2”;
int [] arr=new int[5];
for(int i=0;i<5;i++)
{
if(i!=0)//如果是第一个数字则不追加
S_num=+"2";
arr=(int)S_num;
}
你在求出数组每个元素的和封装成一个有参方法在main函数中调用此方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马