输入一位四位数,求其各各位上的数字之和。例如:输入的是1234,各个位上的数字之和为1+2+3+4=10。
我的想法是把数字存入数组中,但是不行啊,有人帮我改改我的代码吗??
import java.util.Scanner;
public class add {
int sum=0;
public static void main(String args[]){
Scanner scan=new Scanner(System.in);
System.out.println("请输入数字:");
String ss=scan.nextLine();
int[] ss=ss.toIntArray();
for(int i=0;i<=ss.length;i++)
if(Character.isDigit(ss[i])){
sum=sum+ss[i];
}else{
System.out.println("输入的内容中有元素不是数字");
}
System.out.println(+sum);
}
}
数字在内存中是二进制存放,你的思路就有问题。首先,你接受到的是字符串,那你的toIntArray()方法就肯定不对的。用下面的试试:
static int [] parseStringToIntArray(String str)
{
int []num = new int[str.length()];
for(int i=0;i<str.length();i++)
{
num[i] = str.charAt(i)-'0';
}
return num;
}
把你接收到的当做string处理代码大致这样。但如果是数值型,就考虑/10的次方的结果自己在写一个方法去转。
public static void main(String[] args) {
int k = 0;
int m = 0;
System.out.println("输入一个四位数:");
Scanner input = new Scanner(System.in);
int nums = input.nextInt();
while (nums != 0) {
m = nums % 10;
nums = nums / 10;
k = k + m;
}
System.out.println("所有位数和为:" + k);
}
1楼的挺好的,或者用do while
import java.util.Scanner;
public class Sum4Num {
public static void main(String[] args) {
int k = 0;
int m = 0;
System.out.println("输入一个四位数:");
Scanner input = new Scanner(System.in);
int nums = input.nextInt();
do {
m = nums % 10;
nums = nums / 10;
k = k + m;
} while (nums != 0);
System.out.println("所有位数和为:" + k);
}
}
public static void main(String args[]){
int sum=0;
Scanner scan=new Scanner(System.in);
System.out.println("请输入数字:");
String ss=scan.nextLine();
char[] uu=ss.toCharArray();
for(int i=0;i<=uu.length-1;i++) {
System.out.println(uu[i] + "");
if (Character.isDigit(uu[i])) {
int num=Integer.parseInt(String.valueOf(uu[i]));
sum = sum + num;
} else {
System.out.println("输入的内容中有元素不是数字");
}
}
System.out.println(sum);
}
自古一楼出正解,不过用内置函数也行,
一楼二楼都是正解,思路有点不一样,但是都是正确思路