我遇到一个问题,即将一个简单的int值(1)与char-array中的值相乘:
public void doStuff(String values)
{
char[] numbers = values.toCharArray();
int result = 1;
for (int i = 0; i < numbers.length; i++)
{
System.out.println(numbers[i] + " " + result);
result *= numbers[i];
}
// more stuff here
}
在我的例子中,输入字符串参数是“73167”。在第一次迭代后,结果“result * = numbers [i]”结果应为7,但eclipse中的调试信息表示结果= 55。 任何提示??
答案 0 :(得分:10)
您的问题是"73167"
不是数字。它是由字符"7"
,"3"
,"1"
,"6"
,"7"
组成的字符串。 Java中的char
是Unicode代码点,'7'
是ASCII / UTF-8中的55。你想做什么
result *= Character.getNumericValue(numbers[i]);
Doc for:Character.getNumericValue(char)
答案 1 :(得分:2)
char值为ascii,'1'不是1
获取实数,使用(charValue - '0')