我被困在下面描述的问题上
假设我们有一个类似 的字符串42932-5
,它有 6 个数字
我想计算总和为
4*6+2*5+9*4+3*3+2*2
我们如何在 Java 中做到这一点?
我被困在下面描述的问题上
假设我们有一个类似 的字符串42932-5
,它有 6 个数字
我想计算总和为
4*6+2*5+9*4+3*3+2*2
我们如何在 Java 中做到这一点?
以与数学和几乎任何其他语言相同的方式计算它
4*10000 + 2*1000 + 9*100 + 3*10 + 2*1 - 5*1
适用于 Fortran、C、C++、C#、Scala 等。
好吧,首先,如果您要求总和,则没有理由将其设为 String ... ),以便自己访问整数的最右边的数字。之后,将整数除以 10 以删除最右边的数字,然后再次使用 % 运算符以访问下一个数字。如果您将这个想法放入一个循环中并进行一些小的修改,它应该完全符合您的要求。
基本上,您尝试将每个数字分别添加到总数中。在您的情况下,您希望将每个数字乘以另一个数字,然后再将其添加到总数中。应该不难弄清楚。希望这可以帮助!
我不能说这很有效,我敢肯定有更好的方法来解决它,但是干草,这很有趣: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