-3

我被困在下面描述的问题上

假设我们有一个类似 的字符串42932-5,它有 6 个数字

我想计算总和

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

我们如何在 Java 中做到这一点?

4

3 回答 3

0

以与数学和几乎任何其他语言相同的方式计算它

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

适用于 Fortran、C、C++、C#、Scala 等。

于 2012-08-11T06:40:22.233 回答
0

好吧,首先,如果您要求总和,则没有理由将其设为 String ... ),以便自己访问整数的最右边的数字。之后,将整数除以 10 以删除最右边的数字,然后再次使用 % 运算符以访问下一个数字。如果您将这个想法放入一个循环中并进行一些小的修改,它应该完全符合您的要求。

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

于 2012-08-11T06:41:09.177 回答
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)));

    }


}

现在,您可以使用 aStringBuilder而不是 a 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
于 2012-08-11T06:54:27.297 回答