java编程题50道之【程序 8 输入数字求和】


题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。a的值以及几个数相加由键盘控制。

例如 假设a=2,键盘输入b=5
则sum = 2+22+222+2222+22222(此时共有 5 个数相加),

下面代码里的   注释部分的    程序分析仔细推敲

 

/*
【程序 8 输入数字求和】 
题目:求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。a的值以及几个数相加由键盘控制。

例如 假设a=2,键盘输入b=5
则sum = 2+22+222+2222+22222(此时共有 5 个数相加),


程序分析:关键是计算出每一项的值。

1			1*a							 sum1= 10^(1-1)*2			=2					sum = sum+sum1=0+2=2
2			1*a+10*a					 sum1= sum1 + 10^(2-1)*2	=2+20=22			sum = sum+sum1=2+22=24
3			1*a+10*a+100*a				 sum1= sum1 + 10^(3-1)*2	=22+200=222			sum = sum+sum1=2+22+222=246	
4			1*a+10*a+100*a+1000*a					
5			
			
*/

import java.util.Scanner;
class Demo8{
	public static void main(String[] args){
		Scanner sc  = new Scanner(System.in);
		System.out.println("请输入正整数a的值:");//a应用于 2  22 222 2222
		int a = sc.nextInt();
		
		System.out.println("请输入正整数b的值:");//b是最终几个数相加
		int b = sc.nextInt();
		
		int sum1 = 0;//sum1= 10^(1-1)*2	=2		
		int sum = 0;//sum = sum+sum1=0+2=2
		
		for(int x = 1; x<=b;x++ ){ 
			int m = x-1;//实现(1-1)
			int s = (int) Math.pow(10,m);	//实现10^(1-1)
			sum1 = sum1 + (s*a);			//实现sum1= 10^(1-1)*2			=2		
			sum = sum +sum1;				//实现sum = sum+sum1=0+2=2
			if(x<b){
				System.out.print(sum1+"+");//输出sum1,后面还要加一个加号,便于最后展示2+22+222+2222这种式子
			}else{
				System.out.print(sum1);//最后一个sum1后不需要+
			}
		}
		
		System.out.println("="+sum);
	}



}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值