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循环中使用它。我知道这是一个我错过的愚蠢的错误,但无法找到它。
答案 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,从而将它们转换为实际的数字整数值。