我遇到了下面描述的问题
假设我们有一个像42932-5
这样的字符串,它有6个数字
我想将总和计算为
4*6+2*5+9*4+3*3+2*2
我们如何用Java做到这一点?
答案 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