黑马程序员技术交流社区

标题: *题目:求s=a+aa+aaa+aaaa+aa...a的值...。。求别的思路 [打印本页]

作者: 刘安    时间: 2016-8-7 20:19
标题: *题目:求s=a+aa+aaa+aaaa+aa...a的值...。。求别的思路
package a1到10;

import java.util.Scanner;

public class 超级相加8 {

        /**
         *题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:关键是计算出每一项的值。
         */
        public static void main(String[] args) {
                int s=0;
        //Math.pow(10, 5)  10的五次方
                Scanner sc=new Scanner(System.in);
                System.out.println("请输入数字0~9用与计算中的a");
               
                int a=sc.nextInt();
                System.out.println("请输入要运算多少次");
       int  time=sc.nextInt();       
       int sum=0;
                if(a>9||a<0||time<1){
                        System.out.println("输入错误,请重新输入");
                }else{
                        //规律  下面是  输入a  和  time 5
                //s=        a*10000+a*1000+a*100+a*10+a*1      11111
//                                   +a*1000+a*100+a*10+a*1     1111
//                                          +a*100+a*10+a*1    111
//                                                +a*10+a*1   11
//                                                      a*1  1
                        //规律  总结 可以这么写  s=a*10000*1+a*1000*2+a*100*3+a*10*4+a*1*5
                        //                   a*Math.pow(10,time-1)*(i+1)
                       
                       
                       
                           //a*Math.pow(10,time-i)*(i+1)---i从0开始到time 结束
                       
                       
                        //设 time=5  a=1
                        for(int i=0;i<time;i++){
                               
                                sum+=a*Math.pow(10, time-i-1)*(i+1);
                        }
                                System.out.println("最后的值为~~~~"+sum);
                       
                       
                }
               

        }

}

作者: 大天    时间: 2016-8-7 20:36
public class Demo08 {
        static int a;
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个10以内的值:");
                 a = (int)sc.nextInt();
                 if(a>=10||a<0) {
                         return;
                 }
                System.out.println("请输入要求数的个数:");
                int number = sc.nextInt();
                int allSum = 0;
                for(int i = 1;i <= number; i++) {
                        System.out.print(getSingleNumber(i)+" ");
                         allSum += getSingleNumber(i);
                }
                System.out.println(allSum);
        }
        public static int getSingleNumber(int n) {
                if(n==1) {
                        return a;
                }
                return getSingleNumber(n-1)*10+a;
        }
}
作者: 大天    时间: 2016-8-7 20:39
上面的是用递归做的。有问题可以一起探讨。





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