2 zpc10cs zpc10cs 于 2015.05.26 17:14 提问

关于加法问题,2+22+222+2222.。。。这样的
for

public class ClassMat26 {
/*
* 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
* 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
*/

public static int Count;

int test(int a,int i) {
      int aa;
    for ( int j = 0; j <=i; j++) {
        aa = a * 10 + a;
        Count = a + aa;
    }
    System.out.println("Count="+Count);
    return 0;
}

public static void main(String[] args) {
    ClassMat26 cm = new ClassMat26();
    cm.test(2,5);
}

}

我的理解的一直加下去,cm.test(2,5); 表示2为初始的,一共加5次,我这样的实现哪里不对吗;如果参数换位cm.test(5,3);,就是5+55+555 这样了

10个回答

Tiger_Zhao
Tiger_Zhao   Rxr 2015.05.26 17:20
已采纳
    int aa = 0;
    Count = 0;
    for ( int j = 0; j <i; j++) {
        aa = aa * 10 + a;
        Count += aa;
    }
ffjdd
ffjdd   2015.05.26 17:17

( int j = 0; j <=i; j++)
多加了一次

bdmh
bdmh   Ds   Rxr 2015.05.26 17:18

for循环里,应该是a*10的i次方才对吧

zpc10cs
zpc10cs 不是哦,我采纳的那位方法 是对的
2 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.26 17:18
 int test(int a,int i) {
int sum = 0;
for(int x = 1; x <= i; i++)
{
    int mul = 1;
    for (int y = 1; y <=x; y++)
        {
            sum += a * mul;
            mul *= 10;
        }
}
System.out.println("Count="+sum);
return sum;
}
caozhy
caozhy   Ds   Rxr 2015.05.26 17:24
/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    int test(int a,int i) {
        if (i == 1) return a;
        int sum = 0;
        for(int x = 1; x <= i; x++)
        {
            int mul = 1;
            for (int y = 1; y <= x; y++)
                {
                    sum += a * mul;
                    mul *= 10;
                }
        }
        return sum;
    }
    public static void main (String[] args) throws java.lang.Exception
    {
        Ideone cm = new Ideone();
        System.out.println("Count="+cm.test(2,5));
    }
} 
caozhy
caozhy   Ds   Rxr 2015.05.26 17:24

Count=24690
http://ideone.com/vQX2sy
通过在线编译

LSL1618
LSL1618   2015.05.26 17:30

s=(ax10^0)+(ax10^1+ax10^0)+(ax10^2+ax10^1+ax10^0)+(ax10^3+ax10^2+ax10^1+ax10^0)+...+(ax10^(n-1)+ax10^(n-2)+...+ax10^0)
这个是规律,自个儿想想逻辑实现。

u014749886
u014749886   2015.05.26 17:31

public static int Count;

int test(int a,int i) {
int aa;
count = a;
if(i>1)
{

for ( int j =2; j <=i; j++) {
aa = a * 10 + a;
Count += aa;
}
}
System.out.println("Count="+Count);
return 0;
}

public static void main(String[] args) {
ClassMat26 cm = new ClassMat26();
cm.test(2,5);
}

u012271952
u012271952   2015.05.26 17:32

int aa = 0;
Count = 0;
for ( int j = 0; j <i; j++) {
aa = aa * 10 + a;
Count += aa;
}
其实这段代码很常用,被应用到很多题目中,当初学习编程的时候,对此印象深刻,aa = aa*10 +a;利用这个代码,当然还要添加其他代码可以实现另外一个功能,输入一个字符串,
把其中的数字提取出来,比如输入“ab12c3d4e5”,输出12345。很经典的哦

u014749886
u014749886   2015.05.26 17:32

你出错的原因就是没考虑好1个数的情况,见我的回复

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!