黑马程序员技术交流社区
标题:
看到这样一个题,却没做出来,求解
[打印本页]
作者:
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
package org.openscience.zhoubo;
public class TestNumberProblem {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(BTsum(2, 5));
}
public static int BTsum(int x,int plus){
int sum = x;
int temp = x;
for (int i = 0; i < plus-1; i++) {
temp = x+temp*10;
sum+=temp;
}
return sum;
}
}
复制代码
这个代码就是你需要的 需要分析的话 再回帖,我感觉应该自己分析下流程可以看懂了~~
作者:
Yuan先生
时间:
2013-9-15 13:33
本帖最后由 Yuan先生 于 2013-9-15 15:22 编辑
public static Integer sum(){
Scanner sc = new Scanner(System.in);
System.out.println("请输入a的初始值:");
Integer ori = sc.nextInt();
System.out.println("请输入累加次数:");
Integer count = sc.nextInt();
Integer sum = 0;
Integer itemp = 0;
if(count == 1)
return ori;
for(int i = 0; i < count; i++){
//算出当前要加的数
itemp = ori + (itemp * 10);
System.out.println("itemp::" + itemp);
sum += itemp;
}
return sum;
}
复制代码
作者:
毋须繁华
时间:
2013-9-15 14:16
本帖最后由 毋须繁华 于 2013-9-15 14:21 编辑
<p><p>long a =2;
int n = 5;
int i = 0;
long b = 0, sum = 0;
while(i < n) {
b = b + a; //b存储的值为 b+a b=2 22 222 2222 22222
sum = sum + b; //sum相加的和
a = a * 10; //a 扩大十倍 a = 20 200 2000
i++ ;
}</p><p>System.out.println(sum); // 得出相加的值</p>
复制代码
作者:
毋须繁华
时间:
2013-9-15 14:19
/**
* 求Sn=a+aa+aaa+…+aa…a(n个a)之值
*
* @param a是一个数字
* @param n表示a的位数
*/
private static void calculateSn(int n, int a) {
long sum = 0;// 计算总和(防止因输入的参数过大,导致int无法表示 这里和使用long型数据)
int num = 1;// 计算每次n个a的值
for (int i = 0; i < n; i++) {
if (i == 0) {
num = a;
sum += num;
} else {// 以后的都满足关系:这个数等于前一个数*10+a
num = num * 10 + a;
sum += num;
}
}
System.out.println("当n=" + n + ",a=" + a + "时,Sn=a+aa+aaa+…+aa…a(n个a)="
+ sum);
}
复制代码
作者:
lizhangzhi
时间:
2013-9-15 15:19
import 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 ;注意,这时的 a 已经变化了。
}
System.out.println("sum="+sum);
}
}
复制代码
作者:
陈国柱
时间:
2013-9-15 16:03
package NoviceLevel;
import java.io.BufferedReader;
import java.io.InputStreamReader;
* 需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222,几个数相加有键盘控制。
public class CountSameNum {
public static void main(String[] args) throws Exception{
System.out.println("请输入需要相加的数字,并使用任意空格分开,最后按回车可得相加结果:");
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!=null){
if(line.equals("over"))//循环结束标记
break;
String[] strs = line.split(" ++");
Long sum = 0l;
count(strs, sum);
}
}
private static void count(String[] strs, Long sum) {
for(String str : strs){
sum += sum.parseLong(str);
}
System.out.println("上述数字相加的总和为:"+sum);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2