我在试着把一组数字相乘。应该很简单,但由于某些原因,我得到了一些巨大的数字,我找不出我哪里做错了。
我输入一个数字,它被分成一个数组,它遍历这些数字并将它们相乘
var iArray = i.toString().toCharArray()
var iCount = iArray.count().toString()
var x = 0
var sum: Long = 1
while(x < iCount.toInt()) {
Log.i(iArray[x].toString(), "array");
sum *= iArray[x].toLong()
x++
Log.i(sum.toString(), "sum");
}
在logcat中,我可以看到数组中的正确数字。例如,如果我尝试357,我得到的结果是
I/3:数组I/51: sum
I/5:数组I/2703: sum
I/7:数组I/148665: sum
但是如果我只计算3*5*7,它工作得很好。我遗漏了什么?
发布于 2019-03-22 06:23:19
你得到的输出是没问题的
因为您将乘以数字的ASCII值,而不是数字本身
3的ASCII值是51,5的ASCII值是53,将它们相乘的结果2703是正确的,依此类推
如果要使用整数乘法,则必须使用将字符数组转换为整数数组或在乘法时考虑ASCII值。
例句:像这样,我不认识sum *= (iArray[x].toLong()-'0')
,你可能已经注意到了。:)
https://stackoverflow.com/questions/55293861
复制相似问题