Java计算问题

时间:2012-08-11 06:29:45

标签: java

我遇到了下面描述的问题

假设我们有一个像42932-5这样的字符串,它有6个数字

我想将总和计算为

4*6+2*5+9*4+3*3+2*2

我们如何用Java做到这一点?

3 个答案:

答案 0 :(得分:0)

以与数学相同的方式计算它,以及任何其他语言

4*10000 + 2*1000 + 9*100 + 3*10 + 2*1 - 5*1

适用于Fortran,C,C ++,C#,Scala,....

答案 1 :(得分:0)

嗯,首先,如果你正在寻找一笔金额,没有理由把它变成一个字符串......我会试着通过给你带来帮助你:你需要使用模数运算符(%),以便自己访问整数的最右边的数字。执行此操作后,将整数除以10以删除最右侧的数字,然后再次使用%运算符以访问下一个数字。如果你把这个想法放到一个循环中并进行一些小的修改,它应该完全符合你的要求。

基本上,您尝试将每个数字分别添加到总数中。在您的情况下,您希望将每个数字乘以另一个数字,然后再将其添加到总数中。应该不难理解。希望这有帮助!

答案 2 :(得分:0)

我不能说这种效果,我确信有更好的方法可以解决它,但干草,这很有趣:P

您需要做的第一件事是丢弃您不需要的String部分

int sum = 0;
String test = "42932-5";
List<Integer> listValues = new ArrayList<Integer>(test.length());
for (int index = 0; index < test.length(); index++) {

    char value = test.charAt(index);
    if (Character.isDigit(value)) {

        listValues.add(Integer.parseInt(Character.toString(value)));

    }


}

现在,您可以使用StringBuilder代替List,但这就是我的想法。

接下来,您需要将它们相加

for (int index = 0; index < listValues.size(); index++) {

    sum += (listValues.get(index) * (test.length() - index - 1));

}

我最终得到了像

这样的东西
(4 * 6) + (2 * 5) + (9 * 4) + (3 * 3) + (2 * 2) + (5 * 1)
= 88