如何按顺序从String中添加所有整数?

时间:2018-11-12 14:03:22

标签: java

例如:

2 ^ 15 = 32768,其位数之和为3 + 2 + 7 + 6 + 8 = 26

但是我没有得到想要的结果

当我添加它给出的所有字符时 输出为: 266

import java.util.Scanner;

public class ProjectEu {
  public static void main(String...rDX) {
    int degree = new Scanner(System.in).nextInt();
    String store = Integer.toString((int)Math.pow(2,degree));
    char [] finals  = store.toCharArray();

    int temp = 0;
    for (int i = 0, n = store.length(); i < n; i++) {
        System.out.printf("values[%d] --> %c \n",i, finals[i]);
        temp = temp + finals[i];
    }

    System.out.println(temp);
 }
}

4 个答案:

答案 0 :(得分:1)

出现此错误的原因是因为temp是一个整数,但是finals[i]是一个字符,因此它将字符转换为ASCII值并相加。您可以通过以下方法解决此问题:

for (int i = 0, n = store.length(); i < n; i++) {
    char ch = store.charAt(i);
    int digit = Integer.parseInt(Character.toString(ch));
    temp = temp + digits;
}

答案 1 :(得分:0)

此行:

temp = temp + finals[i];

求和temp和存储在finals[i]中的char的 ASCII码
您可以通过以下方式获得数字的值:

temp = temp + finals[i] - '0';

这意味着通过从数字的ASCII码中减去0的ASCII码,您可以获得数字的数值。

答案 2 :(得分:0)

在将字符添加到整数时,是在添加字符的整数 code ,而不是其实际数值。

您需要的是Character.getNumericValue

temp = temp + Character.getNumericValue(finals[i]);

答案 3 :(得分:0)

尝试一下:

int sum = store.chars()
               .boxed()
               .map(Character::getNumericValue)
               .mapToInt(Integer::intValue)
               .sum();