将字符串数字转换为整数数组
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
会 return 正 2.
我想将一个数字作为字符串读取,并将其字符拆分为一个整数数组,然后通过遍历该整数数组来求出其数字的总和。
到目前为止,这是我的代码:
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
会 return 正 2.