输入:
每行一个正整数(<2^32).
输出:
每行一个输出,对应该数的各位数之和.
方法一:利用整数取余求解
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
long a = sc.nextLong();
int sum = 0;//用来求和
while(a!=0) {
sum += a%10;
a /= 10;
}
System.out.println(sum);
}
}
}
注:看清题目要求,输入的正整数是小于2^32,int类型的范围是-2^31~(2^31)-1,明显题目设坑了,输入的数范围超过了int类型,所以要用long类型来接收,至于求和sum的类型int,long都可以
方法二:利用递归求和
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
long a = sc.nextLong();
long sum = 0;
sum = s(a);
System.out.println(sum);
}
}
private static long s(long a) {
if(a<10) {
return a;
}else {
return a%10+s(a/10);
}
}
}
方法三:字符求和
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String sts = sc.nextLine();
int sum = 0;
for(int i=0;i<sts.length();i++) {
int a = sts.charAt(i) - '0';//减48也是可以的
sum += a;
}
System.out.println(sum);
}
}
}