如何在java中打印数组中所有数字的总和?

如何在java中打印数组中所有数字的总和?,java,arrays,sum,Java,Arrays,Sum,我试图确定这个数字是奇数还是偶数,输入的长度和输入中所有数字的总和 以下是我的尝试: public static int statNum(int input) { if(input % 2 == 0) { System.out.println("The number is even"); } else { System.out.println("The number is odd"); } System.out.println(I

我试图确定这个数字是奇数还是偶数,输入的长度和输入中所有数字的总和

以下是我的尝试:

public static int statNum(int input) {
    if(input % 2 == 0) {
        System.out.println("The number is even");
    } else {
        System.out.println("The number is odd");
    }

    System.out.println(Integer.toString(input).length());

    String number = String.valueOf(input);
    char [] values = number.toCharArray();

    int sum = 0;
    for (int i = 0; i < values.length; i++) {
        sum = sum + values[i];
    }
    System.out.println("The sum of this number is: " + sum);

    return input;
}
公共静态int statNum(int输入){
如果(输入%2==0){
System.out.println(“数字为偶数”);
}否则{
System.out.println(“数字是奇数”);
}
System.out.println(Integer.toString(input.length());
字符串编号=String.valueOf(输入);
char[]value=number.toCharArray();
整数和=0;
对于(int i=0;i

如果我输入1,总和等于49,如果我输入1234,输入等于202。我做错了什么?

您正在添加字符值,即将字符的ASCII值添加到总和,您应该在添加之前将其解析为int

这样做

sum = sum + Integer.parseInt(Character.toString(values[i]));
或者按照@ZouZou的建议,可以使用

sum = sum + Character.getNumericValue(values[i]);
您需要减去
char
'0'
,因此您只需将零以上的数值相加,而不是将
char
本身的值(即其ascii字符值)相加:


以下是查找数字的位数和长度的代码:

int sum=0;
int length=0;
while(input!=0)
{
    sum+=input%10;
    input/=10;
    length++;
}

您可以通过一次提取一个数字来避免转换为字符串:
%10
将为您提供第一个数字,使用
/10
,您将所有数字按1个位置缩放(丢弃旧的第一个),然后重复,直到得到0。@Shampy希望您的问题得到解决,如果是这样,请接受答案该想法是正确的,但无法编译。使用
Character.getNumericValue(值[i])
int sum=0;
int length=0;
while(input!=0)
{
    sum+=input%10;
    input/=10;
    length++;
}