[英]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.