我想根据其字符串长度乘以该数字。 例如
String s = "153";
因此,上述字符串的长度为3。因此,我想将字符串中的每个数字乘以3次(这是字符串的实际长度)
类似以下内容
Here the length is 3
Something like this 1*1*1+5*5*5+3*3*3
有人可以帮我吗?
这是我尝试过的:
int number = 153;
String originalNumber = number+"";
char[] ch = originalNumber.toCharArray();
int length = originalNumber.length();
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
for (int j = 0; j < ch.length; j++) {
// I'm stuck here
}
}
答案 0 :(得分:3)
因此,您必须将每个数字取为字符串长度的幂,然后将所有这些结果加起来。
您可以执行以下操作:
String s = "153";
int result = 0;
for (char n : s.toCharArray())
if (Character.isDigit(n))
result += Math.pow(Character.getNumericValue(n), s.length());
System.out.println(result);
它打印:
153
我添加了安全检查,以查看字符是否实际上是数字(if (Character.isDigit(n))
)。
答案 1 :(得分:1)
经典解决方案:您需要将每个字符转换为int
,然后使用使用功率来计算其长度并求和:
int res = 0;
for (int i = 0; i < ch.length; i++) {
int newNb = (int) Math.pow(Character.digit(ch[i], 10), ch.length);
res += newNb;
}
for-each loop
解决方案
for (char c : ch) {
int newNb = (int) Math.pow(c - '0', ch.length);
res += newNb;
}
要将char c
转换为其相应的int
值,您可以执行以下操作:
int a = Character.getNumericValue(c);
int a = Character.digit(c, 10);
int a = c - '0';
答案 2 :(得分:1)
您可以简单地遍历给定字符串的每个数字并计算其功效。最好使用str.charAt(i)
而不是str.toCharArray()
,以免创建其他char[]
。
public static int multiplyNumberLength(String str) {
int res = 0;
for (int i = 0; i < str.length(); i++)
if (Character.isDigit(str.charAt(i)))
res += Math.pow(str.charAt(i) - '0', str.length());
return res;
}
答案 3 :(得分:0)
要将字符变回数字:
char c = ch[i];
int digit = c - '0';
int product = 1;
然后在您的内部循环中将数字乘以乘积。