繁体   English   中英

将字符串数转换为整数数组

[英]Converting String number to integer array

我想读取一个数字作为字符串,并将其字符拆分为一个整数数组,并通过遍历该整数数组来查找其数字的总和。

到目前为止,这是我的代码:

public static void main(String[] args) {
    Scanner S = new Scanner(System.in);
    String Number = S.next();
    int counterEnd = Number.length();
    int sum = 0 ;

    for ( int i = 0 ; i < counterEnd ; i++) {
         sum += sum + (Number.charAt(i));
    }

    System.out.println(sum);
}

不幸的是,此代码显示的是ASCII的总和而不是数字。

您可以减去'0'字符(即'1' - '0'49 - 48 = 1 ):

sum += Number.charAt(i) - '0';

@August建议,您可以减去字符'0'以获得字符的数值(我发现这种方法有点怪异)。 或者,您可以使用Character.getNumericValue实现此目的:

sum += Character.getNumericValue(Number.charAt(i)); //note it's sum += theDigit; not sum += sum + theDigit

您可能还需要查看增强的for循环,因为您基本上不需要此处的索引:

for(char c : Number.toCharArray()) {
    sum += Character.getNumericValue(c);
}

从Java 8开始,您还可以这样做:

int sum = Number.chars().map(Character::getNumericValue).sum();

它基本上获取String字符的Stream ,将每个字符映射到其对应的数值并将它们求和。

sum+= Integer.parseInt(String.valueOf(Number.charAt(i)));

您可以这样做:

   public static void main(String[] args) {
     Scanner S = new Scanner(System.in);
     String n = S.next();
     int sum = 0;

     for (int i = 0; i < n.length(); i++) {
       sum += Integer.parseInt(n.substring(i, i+1));
     }

     System.out.println(sum);
   }

注意:将for循环的主体替换为:

int offset = (n.substring(i, i+1).equals("-")) ? 1 : 0;
sum += Integer.parseInt(n.substring(i, i+1+offset));
i+=offset;

将允许程序取负数。 例如:输入

-24

将返回正数2。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM