根据数字的长度乘以数字

时间:2019-01-30 15:03:49

标签: java

我想根据其字符串长度乘以该数字。 例如

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 
  }
} 

4 个答案:

答案 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)

  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;
    }
    
  2. 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;

然后在您的内部循环中将数字乘以乘积。