使用for循环查找字符数组中的数字总和

时间:2015-08-23 06:40:18

标签: java arrays for-loop

int sum=0;
Scanner sc=new Scanner(System.in);
System.out.println("enter number");
int y=sc.nextInt();
String s=String.valueOf(y);
char [] ch=s.toCharArray();

for(int i=0;i<ch.length;i++)
{
    sum+=ch[i];
}
System.out.println(sum);

如果我输入数字'111'我会得到147!我想得到3.我找不到错误。

我将一个整数转换为字符串到字符数组,以便我可以在for循环中使用它。我知道这是一个我错过的愚蠢的错误,但无法找到它。

4 个答案:

答案 0 :(得分:5)

在原始代码中,您通过投射int值来汇总char值。但是,在您的情况下,您希望将这些char值的实际数值表示相加。将您的for循环更改为:

for(int i=0;i<ch.length;i++) {
    sum += Character.getNumericValue(ch[i]);
}

答案 1 :(得分:1)

这是因为,当您将字符类型分配给整数时,JVM将按预期分配ASCII值而不是int格式的char。

尝试像parseInt ......

for (int i = 0; i < ch.length; i++)
{
    sum += Integer.parseInt(ch[i]);
}

答案 2 :(得分:1)

您的问题是您计算的字符值memmove(p + 3, p, strlen(p)); // <-- Problematic line (I think) 不是整数值。您可以通过从中减去sum的值,将每个char数字转换为int

'0'

答案 3 :(得分:1)

RecyclerView

此解决方案将ASCII整数值偏移ASCII值为0,从而将它们转换为实际的数字整数值。