黑马程序员技术交流社区

标题: 看到这样一个题,却没做出来,求解 [打印本页]

作者: Bad_Boy    时间: 2013-9-15 12:12
标题: 看到这样一个题,却没做出来,求解
本帖最后由 Bad_Boy 于 2013-9-15 16:29 编辑

求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222,几个数相加有键盘控制。

作者: 雪龙    时间: 2013-9-15 12:38
我这个不是有键盘控制的,如果你想使用键盘控制,可以使用system.in 方法获取键盘的读数。这里只给你提供思路和加法运算的方法,
希望能解答你的问题

public class NNumberAdd {
/**
  * @param args
  */
public static void main(String[] args) {
  double a = number(3);
  System.out.println(a);
}
private static double number(int number) {
  // 求几个数的总和
  double sum = 0;
  // 定义一个相乘的基数
  double base;
  for (int i = 1; i < number + 1; i++) {
   // 使用的是1111*ar的形式得到aaaa这种类型的数字
   base = (Math.pow(10, i) - 1) / 9;
   sum = sum + base * number;
  }
  return sum;
}
}


作者: zhou5852    时间: 2013-9-15 13:21
  1. package org.openscience.zhoubo;

  2. public class TestNumberProblem {

  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.                 System.out.println(BTsum(2, 5));
  6.         }
  7.    public static int BTsum(int x,int plus){
  8.            int sum = x;          
  9.            int temp = x;
  10.            for (int i = 0; i < plus-1; i++) {
  11.                 temp = x+temp*10;
  12.                 sum+=temp;
  13.         }
  14.            return sum;
  15.    }
  16. }
复制代码
这个代码就是你需要的  需要分析的话 再回帖,我感觉应该自己分析下流程可以看懂了~~
作者: Yuan先生    时间: 2013-9-15 13:33
本帖最后由 Yuan先生 于 2013-9-15 15:22 编辑
  1. public static Integer sum(){
  2.                 Scanner sc = new Scanner(System.in);
  3.                 System.out.println("请输入a的初始值:");
  4.                 Integer ori = sc.nextInt();
  5.                 System.out.println("请输入累加次数:");
  6.                 Integer count = sc.nextInt();
  7.                 Integer sum = 0;
  8.                 Integer itemp = 0;
  9.                 if(count == 1)
  10.                         return ori;
  11.                 for(int i = 0; i < count; i++){
  12.                         //算出当前要加的数
  13.                         itemp = ori + (itemp * 10);
  14.                         System.out.println("itemp::" + itemp);
  15.                         sum += itemp;
  16.                 }
  17.                 return sum;
  18.         }
复制代码

作者: 毋须繁华    时间: 2013-9-15 14:16
本帖最后由 毋须繁华 于 2013-9-15 14:21 编辑
  1. <p><p>long a =2;
  2.       int n = 5;
  3.       int i = 0;
  4.        long b = 0, sum = 0;
  5.           while(i < n) {
  6.                   b = b + a;        //b存储的值为 b+a   b=2  22  222  2222  22222
  7.       sum = sum + b;    //sum相加的和
  8.       a = a * 10;       //a 扩大十倍   a = 20 200 2000
  9.       i++ ;            
  10.     }</p><p>System.out.println(sum); // 得出相加的值</p>
复制代码

作者: 毋须繁华    时间: 2013-9-15 14:19
  1.         /**
  2.          * 求Sn=a+aa+aaa+…+aa…a(n个a)之值
  3.          *
  4.          * @param a是一个数字
  5.          * @param n表示a的位数
  6.          */
  7.         private static void calculateSn(int n, int a) {
  8.                 long sum = 0;// 计算总和(防止因输入的参数过大,导致int无法表示 这里和使用long型数据)
  9.                 int num = 1;// 计算每次n个a的值
  10.                 for (int i = 0; i < n; i++) {
  11.                         if (i == 0) {
  12.                                 num = a;
  13.                                 sum += num;
  14.                         } else {// 以后的都满足关系:这个数等于前一个数*10+a
  15.                                 num = num * 10 + a;
  16.                                 sum += num;
  17.                         }
  18.                 }

  19.                 System.out.println("当n=" + n + ",a=" + a + "时,Sn=a+aa+aaa+…+aa…a(n个a)="
  20.                                 + sum);
  21.         }
复制代码

作者: lizhangzhi    时间: 2013-9-15 15:19
  1. import java.util.Scanner;
  2. class Multinomial{
  3.     public static void main(String[] args){
  4.         int  a;      //定义输入的 a
  5.         int  howMany;   //定义最后的一项有多少个数字
  6.         Scanner scanner = new Scanner(System.in);
  7.             System.out.println("请输入一个 1~9 的 a 值");
  8.         a = scanner.nextInt();
  9.             System.out.println("请问要相加多少项?");
  10.         howMany = scanner.nextInt();
  11.         int sum=0;
  12.         int a1=a;  // 用来保存 a 的初始值
  13.         for (int i=1; i<=howMany; i++){
  14.             sum+= a;
  15.             a = 10*a +a1;   // 这表示a 的下一项
  16.         // 每次 a 的下一项都等于前一项*10,再加上刚输入时的 a ;注意,这时的 a 已经变化了。
  17.             }
  18.         System.out.println("sum="+sum);
  19.     }
  20. }
复制代码

作者: 陈国柱    时间: 2013-9-15 16:03
  1. package NoviceLevel;

  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;

  4. * 需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222,几个数相加有键盘控制。
  5. public class CountSameNum {
  6.         public static void main(String[] args) throws Exception{
  7.                 System.out.println("请输入需要相加的数字,并使用任意空格分开,最后按回车可得相加结果:");
  8.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  9.                 String line = null;
  10.                 while((line=bufr.readLine())!=null){
  11.                         if(line.equals("over"))//循环结束标记
  12.                                 break;
  13.                         String[] strs = line.split(" ++");
  14.                         Long sum = 0l;
  15.                         count(strs, sum);                       
  16.                 }
  17.         }

  18.         private static void count(String[] strs, Long sum) {
  19.                 for(String str : strs){
  20.                         sum += sum.parseLong(str);
  21.                 }
  22.                 System.out.println("上述数字相加的总和为:"+sum);
  23.         }

  24. }
复制代码





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