黑马程序员技术交流社区

标题: 求 a+aa+aaa+…….+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也要可以指定 [打印本页]

作者: 王小丑    时间: 2013-1-27 17:17
标题: 求 a+aa+aaa+…….+aaaaaaaaa=? 其中a为1至9之中的一个数,项数也要可以指定
求  a+aa+aaa+…….+aaaaaaaaa=?

其中a为1至9之中的一个数,项数也要可以指定,我请教了以为学长 他说就是这样的,可是为什么我上机运行不出来?求高手指点,本人是初学者,虚心向大家学习

mport java.util.Scanner;

class Multinomial{

public static void main(String[] args){

int  a;      //定义输入的 a

int  howMany;   //定义最后的一项有多少个数字

Scanner scanner = new Scanner(System.in);

System.out.println(“请输入一个 1~9 的 a 值”);

a = scanner.nextInt();

System.out.println(“请问要相加多少项?”);

howMany = scanner.nextInt();

int sum=0;

int a1=a;  // 用来保存 a 的初始值

for (int i=1; i<=howMany; i++){

sum+= a;

a = 10*a +a1;   // 这表示a 的下一项

// 每次 a 的下一项都等于前一项*10,再加上刚输入时的 a ;
}

System.out.println(“sum=”+sum);

}

}


作者: 杨玲    时间: 2013-1-27 17:35
a = 10*a +a1;   // 这表示a 的下一项
你的这一行代码改一下就可以了,你那个a1能编译通过?
作者: 王小丑    时间: 2013-1-27 17:59
修改了一下 还是运行不出来 您能给出完整的程序吗 这个运行不出来 请教很多人了
作者: 张庚    时间: 2013-1-27 18:04
程序分析:关键是计算出每一项的值。   
import java.io.*;
public class Sumloop {
  public static void main(String[] args) throws IOException
  {
          int s=0;
          String output="";
          BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
          System.out.println("请输入a的值");
          String input =stadin.readLine();
          for(int i =1;i<=Integer.parseInt(input);i++)
          {
                  output+=input;
                  int a=Integer.parseInt(output);
                  s+=a;
          }
          System.out.println(s);
  }
}
另解:
import java.io.*;
public class Sumloop {
  public static void main(String[] args) throws IOException
  {
          int s=0;
          int n;
          int t=0;
          BufferedReader stadin = new BufferedReader(new InputStreamReader(System.in));
          String input = stadin.readLine();
          n=Integer.parseInt(input);
          for(int i=1;i<=n;i++){
           t=t*10+n;
           s=s+t;
           System.out.println(t);
          }
          System.out.println(s);
         }
}

作者: 张庚    时间: 2013-1-27 18:04
希望能帮到你
作者: 郭孟涛    时间: 2013-1-27 19:14
  1. /*
  2. 题目:求  a+aa+aaa+…….+aaaaaaaaa=?

  3. 分析:
  4. 1. 如果a等于8,则形式如8+88+888+8888+****
  5. 2. 按照10倍数+上一数值的增加

  6. 方法:
  7. 1.求出a*10+a的数值
  8. 2.循环获取和值
  9. 3.设定一个静态方法 sum(),方便多次使用
  10. 4.定义数值a,和项数b

  11. */

  12. class  Test
  13. {
  14.         public static void main(String[] args)
  15.         {
  16.                 sum(8,4);
  17.         }
  18.         public static void sum(int a,int b)
  19.         {
  20.                 int c;
  21.                 int d ;
  22.                 c = d = a ; //
  23.                 while (b>1) //根据项数进行减一循环
  24.                 {
  25.                         a = a*10 + c ; //每次循环乘以10加固定的a初始值,这里用c代表
  26.                         d = d + a ;   //用d汇总每次循环的总和,因为上面的a值要保持aaa的格式不变
  27.                         b--;
  28.                 }
  29.                 System.out.println(d);        //输出合计值
  30.                
  31.         }
  32. }
复制代码

作者: 金辉    时间: 2013-1-27 19:50
  1. import java.util.*;
  2. class Test
  3. {
  4.         static double sum;
  5.         static double s;
  6.         double a;
  7.         double n;
  8.         Scanner sc=new Scanner(System.in);
  9.         Test()
  10.         {
  11.                
  12.                 System.out.print("请输入a:");
  13.                 a=sc.nextDouble();
  14.                 System.out.println("请问要加多少项?");
  15.                 n=sc.nextDouble();               
  16.         }
  17.         double jx()
  18.         {
  19.             for(int i=0;i<n;i++)
  20.                         {
  21.                                 s=s+a*Math.pow(10,i);
  22.                                 sum+=s;
  23.                         }
  24.                         return sum;
  25.         }
  26.        
  27.         public static void main(String[] args)
  28.         {
  29.                 Test t=new Test();
  30.                 System.out.println(t.jx());
  31.         }
  32.                
  33.        
  34.                
  35. }
复制代码

作者: 金辉    时间: 2013-1-27 19:51
金辉 发表于 2013-1-27 19:50

自己试吧,没问题的
作者: 舒远    时间: 2013-1-28 14:06
本帖最后由 舒远 于 2013-1-28 14:11 编辑
  1. private static int aaaa(int a, int i) {
  2.   return i <= 0 ? 0 : (int) (Math.pow(10, --i) * a * (a - i) + aaaa(a, i));
  3.         }
  4.         
  5.         public static int add(int a){
  6.                 return aaaa(a, a);
  7.         }
复制代码
递归整了一个,比循环的方式复杂点。add方法为主调方法。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2