我正在尝试将数字数组相乘。应该很简单,但是由于某些原因,我得到了很多数字,而且我不知道自己在哪里做错了。
我输入一个数字,它被分解成一个数组,遍历数字并将它们相乘
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:总和
I / 5:数组 I / 2703:总和
I / 7:数组 I / 148665:总和
但是,如果我只计算3 * 5 * 7,它就可以正常工作。我想念什么?
答案 0 :(得分:1)
您得到的输出是好的
因为您要乘以数字的ASCII值而不是数字本身
ASCII值3是51,5是53,将它们相乘结果2703是正确的,依此类推
如果要使用整数乘法,则必须使用将字符数组转换为整数数组或在乘法时考虑ASCII值。
例如:public static List<Instrument> SplitCsv(string csv)
{
var textReader = new StringReader(@"D:\CSVStuff\Jasper.csv");
var csvr = new CsvReader(textReader);
var instrumentList = csvr.GetRecords<Instrument>().ToList();
return instrumentList;
}
之类的东西,您可能已经注意到,我不知道kotlin。 :)